【发布时间】:2019-02-27 17:37:41
【问题描述】:
我有一个<input>,其中包含一个电话号码。电话号码在服务器端进行验证(大量业务逻辑)。
我创建了一个异步验证器PhoneNumberValidator。当它调用服务器时,我希望仅在用户离开字段(模糊)时触发验证。
FormControl 构造函数包含 3 个参数:
constructor(
formState?: any,
validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,
asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null
);
- 初始值
- 验证器或验证器数组或
AbstractControlOptions或 null - 异步验证器或异步验证器数组或 null
因此,对于简单的验证器,可以传递一个 AbstractControlOptions,其中包含选项 updateOn,这正是我想要的。
为什么异步验证器没有这样的选项?还有其他方法吗?
【问题讨论】:
-
你试过了吗?我在一个字段上使用了
updateOn,其中包括同步和异步验证器。或者你的意思是你只想要它在异步验证器上,而不是同步? -
@AJT_82 如果我将
{updateOn: 'blur'}作为第二个参数,则永远不会调用异步验证器。此字段上没有其他验证器。另外,我检查了(blur)事件是否适用于该字段(基本的<input matInput>) -
如果您没有同步验证器,则只需为该部分设置一个空数组:)
-
@AJT_82 问题是我试图将验证器作为 FormControl 的第三个参数传递,而不是在
AbstractControlOptions中传递它。谢谢:)
标签: angular