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();
});
AngularJS2 重新添加了双向绑定的概念。
在 AngularJS2 中,您需要明确指出该控件具有双向绑定。
https://angular.io/docs/ts/latest/guide/forms.html
[(ngModel)]="model.name" 名称="name"
应该给你想要的。
我有一个 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();
});
AngularJS2 重新添加了双向绑定的概念。
在 AngularJS2 中,您需要明确指出该控件具有双向绑定。
https://angular.io/docs/ts/latest/guide/forms.html
[(ngModel)]="model.name" 名称="name"
应该给你想要的。