2016-12-02 30 views
1

我有一個角度2模型驅動窗體,它具有「FormArray」類型的屬性。當我向這個表單數組添加或刪除項目時,表單本身似乎沒有註冊任何更改,並且表單不會變得「髒」。Angular 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

通常,髒意味着在任何字段中都有一些值更新。

只有當用戶開始輸入時(髒了),輸入纔會變髒。

但是,如果你想完全破解這一點,讓您添加或刪除元素後弄髒你自己:如果你想使窗體髒

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

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

好的。很公平。但是模型驅動的表單不應該自動檢測到模型中發生了變化,並且使表單自身變髒? –

+0

不,髒意味着人的手使模型變髒:) – Milad

+0

啊.. gotcha。謝謝! –

0

AngularJS2加回的概念的雙向綁定。

在AngularJS2中,您需要明確指出該控件具有雙向綁定。

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

[(ngModel)] = 「model.name」 NAME = 「名稱」

應該給你你想要的東西。

相關問題