Angular ExpressionChangedAfterItHasBeenCheckedError в пользовательском элементе управления формы - PullRequest
0 голосов
/ 23 мая 2018

Мое приложение 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();
  }

Код основан на этом сообщении в блоге (реализует reCAPTCHA с Angular).

Я уже прочитал SO ответ, в котором описана ошибка, но я не могу исправить ее в своей конкретной ситуации.

Вопрос:

Почему я получаю эту ошибку и что я могу сделать, чтобы это исправить?

Если вам нужен дополнительный код или информация, пожалуйста, прокомментируйте.

1 Ответ

0 голосов
/ 23 мая 2018

Сохраните функцию this.setValidator() в установленном тайм-ауте

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

Для получения дополнительной информации об этой ошибке прочитайте this

...