Angular2 - 如何将表单上的“touched"属性设置为 true
我的组件中有一个响应式表单,我想在每个输入上设置 touched
属性等于 true
.我当前的代码执行此操作,但会引发错误 Cannot set property touch of #
:
I have a reactive form in my component and I want to set the touched
property on every one of the inputs equal to true
. My current code does this, but it throws the error 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
?
How can I set the touched
value of every input to true
?
有一个非常简单的方法可以做到这一点:markAsTouched
.用在表单组上应该就够了.
There's a pretty straightforward method to do this: markAsTouched
. It should be enough to use it on the form group.
this.addressForm.markAsTouched()
如果您出于某种原因想要手动标记所有控件,它们本身就有此方法可用.
In case you want for some reason to mark all controls manually, they itself have this method available.
markAsTouched
是所有表单元素继承的 AbstractControl
的方法.出于好奇,您可能想访问 @angular/forms/src/model.d.ts
声明文件以查找表单对象的一些更有趣的方法.或者直接访问文档.
markAsTouched
is a method of the AbstractControl
all form elements inherit from. Out of curiosity, you might want to visit the @angular/forms/src/model.d.ts
declaration file to find some more interesting methods of the form objects. Or just visit the documentation.