Угловая директива не получает изменений от компонента, внесенного в метод ngOnDestroy

#javascript #angular #angular-directive #angular-components #lifecycle

Вопрос:

После уничтожения компонента возникает неожиданное поведение директивы.

Директива не получила изменений, внесенных в метод ngOnDestroy в компоненте

компонент :

 export class InfoButtonComponent implements OnDestroy {
    display = false;

    justMethod() {
      this.display = true | false; // (whatever) works fine, directive recevied that display was changed
    }

    ngOnDestroy(): void {
      this.display = false; // directive doesn't handle it
      this.cdr.detectChanges();
    }
}

<div
    [show]="display"
  >1</div>
 

директива:

 export class TooltipDirective implements OnChanges {
  @Input() show = false;
  ngOnChanges(changes: SimpleChanges): void {
    // get changes from component made in other methods
    // doesn't get changes made in ngOnDestroy method
  }
}
 

Ответ №1:

Похоже, соответствует тому, что говорится в документации для ngOnDestroy() :

Вызывается непосредственно перед тем, как Angular уничтожит директиву или компонент.

Я бы сделал акцент на «немедленно» и не ожидал, что после этого будет запущен еще один раунд обнаружения изменений.

Неясно, чего вы пытаетесь достичь, но это звучит как взлом.