Не удается прочитать свойство 'disable' из неопределенного: this.ngControl.control не определено в Ivy - PullRequest
2 голосов
/ 20 февраля 2020

Так же, как эта проблема гласит , если вы попытаетесь получить доступ к ngControl.control с директивой:

export class DisabledDirective {
  @Input()
  set opDisabled(condition: boolean) {
    const action = condition ? 'disable' : 'enable';
    this.ngControl.control[action]();
  }

  constructor(private ngControl: NgControl) {}
}

При первом рендеринге вы увидите ошибку:

core.js:5828 ERROR TypeError: Cannot read property 'disable' of undefined

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Решение в данной ссылке довольно хакерское и ненадежное.

Пока они не решат проблему, просто защитите выражение с if-s для первого рендеринга:

export class DisabledDirective {
  @Input()
  set opDisabled(condition: boolean) {
    const action = condition ? 'disable' : 'enable';
    if(this.ngControl?.control){
       this.ngControl.control[action]();
    }
  }

  constructor(private ngControl: NgControl) {}
}

ps .: обратите внимание на новый оператор safe / elvis, который вы также можете использовать в Angular 9 в коде TS :)

0 голосов
/ 22 февраля 2020
...