我有一个属性:
public rows: any[];
然后我在构造函数中填充这个数组:
this.rows.push({"id": 1, "subject": "Subject", "scope": "Learn basics", "hours": 2});
在模板I中迭代数组,如:
<tr *ngFor="let p of rows; let i = index;">
所以,如果我从数组中删除元素:
this.rows.splice(this.rows.length - 1, 1);
它不会改变模型,我在数组中的一行之前看到。
答案 0 :(得分:2)
如果仅更改了数组,则Angular不会将数组识别为已更改。要让它知道数组已更改,只需在删除元素后重新分配数组对象,它应该在DOM上更新:
this.rows.splice(this.rows.length - 1, 1);
this.rows = [...this.rows];
答案 1 :(得分:1)
重新分配数组,以便angular可以注意到更改并更新数组
答案 2 :(得分:1)
在我的情况下,过滤数组而不是拼接它
array.splice(removeIndex, 1) // replaced with
array = array.filter(
(element, index) => removeIndex !== index
)
答案 3 :(得分:0)
相反,您可以执行以下操作
this.rows.splice(this.rows.indexOf(this.rows.length-1),1);