2016-12-02 32 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 = “名称”

应该给你你想要的东西。

相关问题