Angular2 - 如何将窗体上的“touch”属性设置为true

问题描述 投票:12回答:1

我的组件中有一个反应形式,我想在每个输入上设置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值?

forms angular angular2-forms reactive-forms
1个回答
40
投票

有一个非常简单的方法来做到这一点:markAsTouched。它应该足以在表单组中使用它。

this.addressForm.markAsTouched()

如果您出于某种原因需要手动标记所有控件,它们本身就可以使用此方法。

markAsTouchedAbstractControl所有形式元素继承的方法。出于好奇,您可能想要访问@angular/forms/src/model.d.ts声明文件以找到一些更有趣的表单对象方法。或者只是访问documentation

© www.soinside.com 2019 - 2024. All rights reserved.