如何使用角度4中的ngModel正确绑定数组?

时间:2017-10-28 15:42:46

标签: javascript angular ngmodel

我们假设我有一个数组[1,2,3]。我想迭代所有项目并将每个项目绑定到ngModel。当我在更改第一个元素后运行此代码时,第二个元素获得相同的值。有什么问题?

<div *ngFor="let x of array; let i = index;">
    <input type="number" [(ngModel)]="x[i]">
</div>

1 个答案:

答案 0 :(得分:2)

默认情况下,

ngFor使用对象标识来比较值,当使用原始值(数字,字符串,布尔值)时,它会中断,因为它们在修改时会更改标识)。使用trackBy允许配置ngFor来索引索引而不是标识:

<div *ngFor="let x of array; let i = index;trackBy:trackByIdx">
    <input type="number" [(ngModel)]="x[i]">
</div>
trackByIdx(index: number, obj: any): any {
  return index;
}