2017-10-28 61 views
1

私は配列[1,2,3]を持っているとしましょう。すべての項目を繰り返し処理し、それぞれをngModelにバインドします。最初の要素を変更した後にこのコードを実行すると、2番目の要素は同じ値になります。どうしたの?デフォルトで角度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)は、プリミティブ値(数字、文字列、ブール値)を使用しているときに変更するとき、彼らはアイデンティティを変更するので、これは、壊れ、値を比較するために、オブジェクトIDを使用しています。 trackByを使用する代わりに、アイデンティティの指標をZSEする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; 
} 
0

私は1年前@ギュンターZöchbauerによって回答されている同じ問題を抱えていた、私はそれが誰かを助けるかもしれないことを願っていますその方法によって渡す:

Angular2 ngModel inside of ngFor

おかげで再びギュンターに行きます!

関連する問題