我的组件中有一个反应形式,我想在每个输入上设置touched
属性等于true
。我当前的代码执行此操作,但它会引发错误Cannot set property touched of #<AbstractControl> which has only a getter
:
addressForm: FormGroup;
...
this.addressForm = this._fb.group({
street: ["", [<any>Validators.required]],
city: ["", [<any>Validators.required]],
state: ["", [<any>Validators.required]],
zipCode: ["", [<any>Validators.required]],
country: ["", [<any>Validators.required]]
});
...
for (var key in this.addressForm.controls) {
this.addressForm.controls[key].touched = true;
}
如何设置touched
的每个输入的true
值?
有一个非常简单的方法来做到这一点:markAsTouched
。它应该足以在表单组中使用它。
this.addressForm.markAsTouched()
如果您出于某种原因需要手动标记所有控件,它们本身就可以使用此方法。
markAsTouched
是AbstractControl
所有形式元素继承的方法。出于好奇,您可能想要访问@angular/forms/src/model.d.ts
声明文件以找到一些更有趣的表单对象方法。或者只是访问documentation。