仅在模糊时触发异步验证器

时间:2019-02-27 17:37:42

标签: angular

我有一个<input>,其中包含一个电话号码。电话号码在服务器端(很多业务逻辑)进行了验证。

我做了一个异步验证器PhoneNumberValidator。在它调用服务器时,我希望仅在用户离开字段(模糊)时才触发验证。

FormControl构造函数包含3个参数:

constructor(
  formState?: any, 
  validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, 
  asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null
);
  1. 初始值
  2. 验证器或验证器数组或AbstractControlOptions或为空
  3. 异步验证器或异步验证器数组或为空

因此,对于简单的验证器,可以传递包含选项AbstractControlOptions的{​​{1}},该选项正是我想要的。

为什么异步验证器没有这样的选项?还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

我是通过这样在FormGroup上定义FormControl来完成此操作的:

{
  controlName: new FormControl({
    validators: [ Validators.required, etc ]
    asyncValidators: yourValidatorFunction(),
    updateOn: 'blur',
  }),
}