#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 уничтожит директиву или компонент.
Я бы сделал акцент на «немедленно» и не ожидал, что после этого будет запущен еще один раунд обнаружения изменений.
Неясно, чего вы пытаетесь достичь, но это звучит как взлом.