2016-12-02 2 views
1

「FormArray」というタイプのプロパティを持つ角2のモデル駆動型フォームがあります。このフォーム配列にアイテムを追加または削除すると、フォーム自体は変更を登録していないようで、フォームは「ダーティ」になりません。ここ角2のモデル駆動型:FormArrayにアイテムを追加/削除してもフォームがダーティーにならない

は、問題を示すplunkerある:ここhttps://plnkr.co/edit/j1S80CmPBF1iHI5ViEia?p=preview

がFormArrayから要素を除去する方法であって

removeAddress(i: number) { 
    const control = <FormArray>this.myForm.controls['addresses']; 
    control.removeAt(i); 
} 

を検出するための手動フォームのthis.myForm.dirty = trueを設定する以外の方法はありますこの<FormArray>のプロパティに変更が加えられましたか?

答えて

1

通常、汚れているとは、いずれかのフィールドに値の更新があったことを意味します。

入力が汚れているのは、ユーザーが入力を開始した(汚れている)場合のみです。

しかし、あなたが任意の要素を追加または削除した後に自分自身を完全にこれをハックし、それが汚れたようにしたい場合:AngularJS2は概念を再び追加

 this.myForm.valueChanges.subscribe(()=>{ 

       this.myForm.markAsDirty(); 
     }); 
+0

けっこうだ。しかし、モデル駆動型は、モデル内で変更が発生したことを自動的に検出して、フォーム自体をダーティにするべきではないでしょうか? –

+0

いいえ、汚れているということは、人間の手がモデルを汚くしたことを意味します:) – Milad

+0

ああ。ありがとう! –

0

:あなたは、フォームが汚いしたい場合は

を2ウェイバインディングの

AngularJS2では、コントロールに双方向バインディングがあることを明示的に示す必要があります。

https://angular.io/docs/ts/latest/guide/forms.html

[(ngModel)] = "model.name" の名前は= "名前"

何をしたいあなたを与える必要があります。

関連する問題