自定义表单控件上的Angular ExpressionChangedAfterItHasBeenCheckedError

时间:2018-05-23 17:22:19

标签: angular recaptcha

我的Angular应用程序工作正常,但在我尝试在指令上实现ngAfterViewInit后,我收到以下错误:

enter image description here

以下是我尝试实施的代码:

  ngAfterViewInit() {
    this.control = this.injector.get(NgControl).control;
    this.setValidator();
  }


  private setValidator() {
    this.control.setValidators(Validators.required);
    this.control.updateValueAndValidity();
  }

代码基于this博文(使用Angular实现reCAPTCHA)。

我已经阅读了描述错误的SO answer,但我无法在特定情况下修复它。

问题:

为什么我收到此错误,我该怎么做才能解决此问题?

如果您需要任何其他代码或信息,请发表评论。

1 个答案:

答案 0 :(得分:2)

将函数this.setValidator()保留在settimeout

 ngAfterViewInit() {
    this.control = this.injector.get(NgControl).control;
    setTimeout (()=> {
        this.setValidator();
    },0);
  }

有关此错误的详细信息,请参阅this