改变模型后为什么没有在ng中更新模型?

时间:2017-12-07 11:20:54

标签: angular

我有一个属性:

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);

它不会改变模型,我在数组中的一行之前看到。

4 个答案:

答案 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);