我有一个角度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>
属性进行了更改之外,还有其他方法吗?
答案 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”
应该给你你想要的东西。