首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AsyncValidator覆盖Validator

AsyncValidator覆盖Validator
EN

Stack Overflow用户
提问于 2021-09-06 14:50:40
回答 1查看 94关注 0票数 2

添加验证器是否有任何理由覆盖现有的异步验证器?

我在formGroup上使用了角12和formGroup()。医生说:“不影响其他验证程序。”

一旦我添加了验证器,异步验证器就不再触发了。

代码语言:javascript
运行
复制
public testValidator(): AsyncValidatorFn {
    return (control: AbstractControl): Observable<ValidationErrors | null> => {
      return of({wrongAuthority: 123});
    }
  }

public authorityValidator(control: AbstractControl) {
   return {wrongAuthority: 12333};
}

this.form = this._fb.group({...}, { asyncValidators: this.testValidator()});

this.form.addValidators(this.authorityValidator);
this.form.updateValueAndValidity();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-06 15:14:53

对角码的研究提供了一些结果:

代码语言:javascript
运行
复制
(this as {errors: ValidationErrors | null}).errors = this._runValidator();
(this as {status: FormControlStatus}).status = this._calculateStatus();

 if (this.status === VALID || this.status === PENDING) {
    this._runAsyncValidator(opts.emitEvent);
 }

如您所见,首先执行同步验证器并设置控制状态,然后如果他抛出错误,则状态值将忽略异步验证器。这事儿可以理解。

Github

P.S. 用console.log执行验证器

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69076487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档