有一个带有方法的类:
public add() {}
public delete(item: Ivoice) {}
以及在对象内部映射这些方法的方法:
this.invoices = data.map(item => {
item.add = this.add;
item.edit = this.delete;
return item;
});
然后在模板中,我尝试这样调用方法:
<div *ngFor="let item of items; let i = index">
<span (click)="item.add(item)">
</div>
但它不起作用。
发布于 2019-05-27 04:48:47
虽然,还不清楚你真正想要实现的是什么,但从技术上讲,问题在于:
item.add = this.add;
item.edit = this.delete;
您基本上是将函数/方法引用分配给item
对象。下一次你通过模板中的一个item.add(项目)通过item
调用方法时,方法/函数将在item
的作用域中调用,而不是在你的类“,即ItemComponent,作用域中调用,这显然是你想要的行为。
您可以使用bind method来避免此问题:
item.add = this.add.bind(this);
item.edit = this.delete.bind(this);
https://stackoverflow.com/questions/56316898
复制相似问题