2017-10-28 25 views
1

我們假設我有一個數組[1,2,3]。我想迭代所有項目並將每個項綁定到ngModel。當我在更改第一個元素後運行此代碼時,第二個元素獲得相同的值。有什麼問題?如何正確綁定角4中的ngModel數組?

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

只要'[(ngModel)] =「x」'應該可以工作 –

+0

https://stackoverflow.com/questions/40863074/ngfor-behaviour-on-primitive-data-type/40863118#40863118 –

回答

0

ngFor默認使用對象標識對值進行比較,這打破時的原始值(數字,字符串,布爾值)被使用,因爲改性當它們改變同一性)。使用trackBy允許配置ngFor到ZSE指數,而不是身份:

<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; 
} 
0

我已經通過@君特Zöchbauer一年前回答同樣的問題,我希望它可以幫助別人路過的那樣:

Angular2 ngModel inside of ngFor

由於去岡特了!