【发布时间】:2016-08-03 09:55:00
【问题描述】:
我正在 Angular2 中验证表单,我使用默认验证器和一些自定义验证函数进行验证。我还从服务器实现了异步验证。现在的问题是,它正在验证更改事件的控件并在该控件上的每次按键时执行 ajax 请求。我期望执行该 ajax 请求以在该控件模糊时执行。
有没有办法控制该控件的验证?或对模糊或任何其他事件执行验证?
【问题讨论】:
我正在 Angular2 中验证表单,我使用默认验证器和一些自定义验证函数进行验证。我还从服务器实现了异步验证。现在的问题是,它正在验证更改事件的控件并在该控件上的每次按键时执行 ajax 请求。我期望执行该 ajax 请求以在该控件模糊时执行。
有没有办法控制该控件的验证?或对模糊或任何其他事件执行验证?
【问题讨论】:
如果您想手动控制验证,您可以使用 AbstractControl 类的 setErrors(我假设您正在使用模型驱动或在组件中引用 FormControl)。
所以,不要将 Validator 函数硬编码到表单初始化中
this.userNameFormControl = this.formBuilder.control(""/*, Validators.required*/);
相反,订阅您的自定义事件并手动验证控件:
validateUserName() {
let validationResult = Validators.required(this.userNameFormControl);
if (validationResult) {
this.userNameFormControl.setErrors(validationResult);
}
}
注意:这些代码行未经测试。
【讨论】: