Estoy tratando de crear una lista de elementos y eliminarlos uno por uno. He usado (click) y removeUser() para eliminar el único elemento, desafortunadamente el resultado es que no importa en qué botón se haga clic, los 3 elementos se eliminan al mismo tiempo. Por favor ayuda. Gracias
export class UserlistComponent { users = [ { id : '1', name: 'Jack', age: '33' }, { id : '2', name: 'Kim', age: '44' }, { id : '3', name: 'Mag', age: '22' }, ] removeUser(id:string): void{ this.users = this.users.filter(user => user.id !== user.id) } } <li *ngFor="let user of users"> {{user.name}} is {{user.age}} years old <button (click)="removeUser(user.id)">Remove</button> </li>Está utilizando su filtro en user.id para ambos lados del operador de comparación.
Necesitas comparar con el parámetro de tu método:
removeUser(id:string): void{ this.users = this.users.filter(user => user.id !== id) }Corrige tu pregunta
Está utilizando la declaración de filtro incorrectamente. Debe usar el padre en la función removeUser para filtrar la lista.
removeUser(id:string): void{ this.users = this.users.filter(user => user.id !== id) }Mejor enfoque
Podría simplemente empalmar los elementos no deseados con Array.splice
Modelo
<li *ngFor="let user of users; let i = index"> {{user.name}} is {{user.age}} years old <button (click)="removeUser(i)">Remove</button> </li>componente.ts
removeUser(index): void{ this.users.splice(index, 1) }