[英]Angular 2 deleting of selected item of an array in Child component
我有一个元素数组,每个数组项都有一个“删除”链接,单击该链接,我希望删除所选数组项。 我已经将对象推入数组并能够获取数据。
下面提到了我正在使用的代码。
子组件
@Component({
selector: 'child',
template: `
<div>
{{element.name}}
<span (click)="deleteElement()">Delete</span>
</div>
`
})
export class ChildComponent {
@Input()
element: any;
@Output()
elementDeleted: EventEmitter<any> = new EventEmitter();
deleteElement() {
this.elementDeleted.emit();
}
}
我的父母组件
@Component({
selector: 'child',
template: `
<div>
<child *ngFor="let element of elements; let i= index;" [element]="element" (elementDeleted)="onElementDeleted(element)">
</child>
</div>
`
})
export class ParentComponent {
constructor() {
this.elements = [
{ name: 'element1' },
{ name: 'element2' },
(...)
];
}
onElementDeleted(element) {
var index = this.elements.findIndex((elt) => (elt===element));
if (index != -1) {
this.elements.splice(index, 1);
}
}
现在,每次删除数组的最后一项而不是删除选定的项时。 如果我单击第0或1st索引的Delete链接,则仍删除最后一项。 我不确定我要去哪里错。
编辑:好的,您也可以这样:
您需要传递要删除的元素,以便删除正确的元素。 因此,请稍微更改您的代码,然后在delete中传递元素。
<div>
{{element.name}}
<span (click)="deleteElement(element)">Delete</span>
</div>
并使您的发射通过要删除的元素:
deleteElement(element) {
this.elementDeleted.emit(element);
}
然后删除元素:
onElementDeleted(element) {
let index = this.elements.indexOf(element);
this.elements.splice(index, 1);
}
正如Daniel所提到的, #
已被弃用,请改用let
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.