Angular 从数组中删除对象数据(方法有问题)
Angular delete obj data from array (issue with method)
我的 Angular 应用程序中有一些数据。
这是数据:
在app.component.ts我有:
myarr = [
{
name: 'mark',
address: 'something'
},
{
name: 'paul',
address: 'somethingelse'
},
];
那我就有方法了
deleteFromArray(index) {
delete this.myarr[index];
}
在我的 app.component.html 我得到:
<table>
<tr *ngFor="let data of myarr; let i = index">
<td>{{ data.name }}</td>
<td>{{ data.address }}</td>
<td>
<button (click)="deleteFromArray(i)">Delete</button>
</td>
</tr>
</table>
删除方法的问题是它返回:
ERROR TypeError: Cannot read property 'name' of undefined
当我删除一个项目时会发生这种情况。
我该如何解决这个问题?
试试这个
this.myarr.splice(index, 1);
试试这个...
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
name = 'Angular';
myarr = [
{
name: 'mark',
address: 'something'
},
{
name: 'paul',
address: 'somethingelse'
},
];
deleteFromArray(key) {
let index = this.myarr.findIndex(d => d === key);
this.myarr.splice(index, 1);
console.log(this.myarr)
}
}
演示:https://stackblitz.com/edit/angular-9sif72?file=src/app/app.component.ts
我会像这样使用 Array.filter
函数:
deleteFromArray(idx: number) {
this.myarr = this.myarr.filter((element, index) => index !== idx);
}
您还可以按任何 属性 过滤集合,而不仅仅是索引
我的 Angular 应用程序中有一些数据。
这是数据:
在app.component.ts我有:
myarr = [
{
name: 'mark',
address: 'something'
},
{
name: 'paul',
address: 'somethingelse'
},
];
那我就有方法了
deleteFromArray(index) {
delete this.myarr[index];
}
在我的 app.component.html 我得到:
<table>
<tr *ngFor="let data of myarr; let i = index">
<td>{{ data.name }}</td>
<td>{{ data.address }}</td>
<td>
<button (click)="deleteFromArray(i)">Delete</button>
</td>
</tr>
</table>
删除方法的问题是它返回:
ERROR TypeError: Cannot read property 'name' of undefined
当我删除一个项目时会发生这种情况。
我该如何解决这个问题?
试试这个
this.myarr.splice(index, 1);
试试这个...
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
name = 'Angular';
myarr = [
{
name: 'mark',
address: 'something'
},
{
name: 'paul',
address: 'somethingelse'
},
];
deleteFromArray(key) {
let index = this.myarr.findIndex(d => d === key);
this.myarr.splice(index, 1);
console.log(this.myarr)
}
}
演示:https://stackblitz.com/edit/angular-9sif72?file=src/app/app.component.ts
我会像这样使用 Array.filter
函数:
deleteFromArray(idx: number) {
this.myarr = this.myarr.filter((element, index) => index !== idx);
}
您还可以按任何 属性 过滤集合,而不仅仅是索引