Angular 2模型驱动表单:向FormArray添加/删除项目不会使表单变脏

时间:2016-12-02 13:08:17

标签: angular angular2-forms

我有一个角度2模型驱动的表单,它具有“FormArray”类型的属性。当我向此表单数组添加或删除项时,表单本身似乎没有注册任何更改,并且表单不会变得“脏”。

这是一个显示问题的傻瓜: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>属性进行了更改之外,还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

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

只有当用户开始输入(使其变脏)时输入才变脏。

但是如果你想完全破解它并在你添加或删除任何元素后让它变脏:

如果您想使表单变脏:

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

                this.myForm.markAsDirty();
       });

答案 1 :(得分:0)

AngularJS2补充了双向绑定的概念。

在AngularJS2中,您需要明确指出控件具有双向绑定。

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

[(ngModel)] =“model.name”name =“name”

应该给你你想要的东西。