Angular 9 Ivy, NgControl не инициализирован в директиве - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь обновить свой проект до Angular9 / Ivy и столкнулся со следующей проблемой. У меня есть пользовательская директива disabledControl, как описано в следующем блоге (https://netbasal.com/disabling-form-controls-when-working-with-reactive-forms-in-angular-549dd7b42110). Я использую его в реактивной форме с выражением для включения / отключения определенных c элементов управления на основе комбинации флажков. После обновления до Angular9 / Ivy ngControl.control больше не устанавливается при первом вызове метода @Input, установленного disableControl. Любые подсказки, как мы можем исправить предлагаемое решение для блога?

1 Ответ

1 голос
/ 06 апреля 2020

Есть открытый вопрос, который вы можете найти Angular Проблемы

Есть хорошее решение, которое twit от Алексея Зуева

Решение использовать ловушку жизненного цикла ngOnChanges с вашей директивой.

Вот пример того, как использовать ловушку жизненного цикла ngOnChanges для решения проблемы.

import { NgControl } from '@angular/forms';
import { Directive, Input, OnChanges } from '@angular/core';

@Directive({
  selector: '[disableControl]',
})
export class DisableControlDirective implements OnChanges {
  @Input('disableControl') disableControl;
  constructor(private ngControl: NgControl) {}

  ngOnChanges(changes) {
    if (changes['disableControl']) {
      const action = this.disableControl ? 'disable' : 'enable';

      this.ngControl.control[action]();
    }
  }
}

Полный пример Алексей Зуев

...