Angular2 - 如何将`touch`属性设置为true

geo*_*gej 20 forms angular2-forms reactive-forms angular

我的组件中有一个反应形式,我想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;
}
Run Code Online (Sandbox Code Playgroud)

如何设置touched每个输入的值true

Mat*_*ocz 51

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

this.addressForm.markAsTouched()
Run Code Online (Sandbox Code Playgroud)

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

markAsTouched是一种AbstractControl继承自所有表单元素的方法.出于好奇,您可能希望访问@angular/forms/src/model.d.ts声明文件以找到表单对象的一些更有趣的方法.或者只是访问文档.