Angular2 - 如何将表单上的“touched"属性设置为 true [英] Angular2 - How to set `touched` property on form to true

查看:30
本文介绍了Angular2 - 如何将表单上的“touched"属性设置为 true的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的组件中有一个响应式表单,我想在每个输入上设置 touched 属性等于 true.我当前的代码执行此操作,但会引发错误 Cannot set property touch of #它只有一个 getter:

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.

这篇关于Angular2 - 如何将表单上的“touched"属性设置为 true的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆