嗨,我是 Angular 13 的新手,并試圖創建一個專案串列并逐個洗掉它們。我已經使用(click)并removeUser()洗掉了單個專案,不幸的是,輸出是無論單擊什么按鈕,所有 3 個專案都被洗掉同時。請幫忙。謝謝
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>
uj5u.com熱心網友回復:
您正在user.id為比較運算子的兩側使用過濾器。
您需要與您的方法的引數進行比較:
removeUser(id:string): void{
this.users = this.users.filter(user => user.id !== id)
}
uj5u.com熱心網友回復:
修復你的問題
您錯誤地使用了過濾器陳述句。您應該在removeUser函式中使用 parementer來過濾串列。
removeUser(id:string): void{
this.users = this.users.filter(user => user.id !== id)
}
更好的方法
您可以將不需要的元素與 Array.splice
模板
<li *ngFor="let user of users; let i = index">
{{user.name}} is {{user.age}} years old
<button (click)="removeUser(i)">Remove</button>
</li>
組件.ts
removeUser(index): void{
this.users.splice(index, 1)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/367285.html
標籤:javascript 有角的
