Angular 2 模型驱动表单:Adding/Removing 项到 FormArray 不会使表单变脏

Angular 2 Model-Driven Form: Adding/Removing items to FormArray doesn't make form dirty

我有一个 angular 2 模型驱动表单,它有一个 属性 类型 "FormArray"。当我向这个表单数组添加或删除项目时,表单本身似乎没有注册任何更改,并且没有创建表单 "dirty".

这是一个显示问题的 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> 属性 所做的更改?

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

一个输入是脏的,只有当用户已经开始输入(使其变脏)时。

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

如果你想让表单变脏:

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

                this.myForm.markAsDirty();
       });

A​​ngularJS2 重新添加了双向绑定的概念。

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

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

[(ngModel)]="model.name" 名称="name"

应该给你想要的。