Home > Blockchain >  Remove an item from a list in Angular
Remove an item from a list in Angular

Time:11-26

Hi I am new to Angular 13 and trying to create a list of items and delete them one by one.I have used (click) and removeUser() to delete the single item, unfortunately the output is that no matter what button is clicked, all the 3 items are deleted at the same time. Please help. Thank you

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>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

CodePudding user response:

You are using your filter on user.id for both sides of the comparison operator.

You need to compare with your method's parameter:

removeUser(id:string): void{ 
    this.users = this.users.filter(user => user.id !== id)
}

CodePudding user response:

Fix to your question

You are using the filter statement incorectly. You should use the parementer in removeUser function to filter down the list.

removeUser(id:string): void{ 
    this.users = this.users.filter(user => user.id !== id)
}

Better Approach

You could just splice the unwanted elements with Array.splice

Template

<li *ngFor="let user of users; let i = index">
    {{user.name}} is {{user.age}} years old
    <button (click)="removeUser(i)">Remove</button>
</li>

Component.ts

removeUser(index): void{ 
    this.users.splice(index, 1)
}
  • Related