从索引值 Angular 中的数组中删除项目
Delete Item from Array in Angular at Index value
可能很简单,但是,我试图从 Angular 中的对象数组中删除项目,但我当前的代码只有 returns 一个 undefined控制台,因为我确定它找不到正确的索引值。它也适用于 Kendo 网格。所以我需要根据用户点击的内容来拼接,而不是特定的id。 Link 演示:https://stackblitz.com/edit/angular-fl5jde-xbsuno
数据结构为:
export const data = [
{
id: 1,
name: "Element 1"
},
{
id: 2,
name: "Element 2"
},
{
id: 3,
name: "Element 3"
},
];
ts 文件
public gridData: any[] = data;
public removeItem(id) {
let index = data.findIndex(e => e.id === id);
if (index !== -1) {
data.splice(index, 1);
}
console.log(id)
}
您可以使用过滤器,这是一种 JavaScript 方法:
public removeItem(id) {
this.gridData = this.gridData.filter(el => el.id != id)
console.log(this.gridData)
}
查看 Live demo
实际问题是您没有向 removeItem
传递任何内容。所以,在你的 html 中,我只是写了 removeItem(dataItem)
而不是 removeItem(id)
。在 ts 中,变化是 let index = data.findIndex(e => e.id === dataItem.id);
.
请检查更新后的https://stackblitz.com/edit/angular-fl5jde-3pb7ef?file=app/app.component.ts
你需要传递数据项,像这样:
<button
kendoButton
look="flat"
[icon]="'delete'"
(click)="removeItem(dataItem)"
>
</button>
然后从this.gridData中删除。
.ts
public removeItem({id}) {
this.gridData = data.filter(e => e.id !== id);
}
可能很简单,但是,我试图从 Angular 中的对象数组中删除项目,但我当前的代码只有 returns 一个 undefined控制台,因为我确定它找不到正确的索引值。它也适用于 Kendo 网格。所以我需要根据用户点击的内容来拼接,而不是特定的id。 Link 演示:https://stackblitz.com/edit/angular-fl5jde-xbsuno
数据结构为:
export const data = [
{
id: 1,
name: "Element 1"
},
{
id: 2,
name: "Element 2"
},
{
id: 3,
name: "Element 3"
},
];
ts 文件
public gridData: any[] = data;
public removeItem(id) {
let index = data.findIndex(e => e.id === id);
if (index !== -1) {
data.splice(index, 1);
}
console.log(id)
}
您可以使用过滤器,这是一种 JavaScript 方法:
public removeItem(id) {
this.gridData = this.gridData.filter(el => el.id != id)
console.log(this.gridData)
}
查看 Live demo
实际问题是您没有向 removeItem
传递任何内容。所以,在你的 html 中,我只是写了 removeItem(dataItem)
而不是 removeItem(id)
。在 ts 中,变化是 let index = data.findIndex(e => e.id === dataItem.id);
.
请检查更新后的https://stackblitz.com/edit/angular-fl5jde-3pb7ef?file=app/app.component.ts
你需要传递数据项,像这样:
<button
kendoButton
look="flat"
[icon]="'delete'"
(click)="removeItem(dataItem)"
>
</button>
然后从this.gridData中删除。
.ts
public removeItem({id}) {
this.gridData = data.filter(e => e.id !== id);
}