Як hooks працюють для динамічно створених компонентів?
В Angular lifecycle hooks для динамічно створених компонентів працюють точно так само, як для звичайних компонентів, але з особливістю, що компонент створюється програмно через ComponentFactory або ViewContainerRef.
Основні моменти
- Створення динамічного компонента:
ts
const factory = this.resolver.resolveComponentFactory(MyComponent);
const componentRef = this.container.createComponent(factory);componentRef.instance- це екземпляр компонента.
- Виклик hooks:
ngOnChanges()- викликається, якщо передані значення через@Inputпісля створення компонента.ngOnInit(),ngDoCheck(),ngAfterContentInit(),ngAfterViewInit()та інші hooks - викликаються автоматично Angular після створення компонента у правильному порядку.ngOnDestroy()- викликається, коли ви видаляєте компонент вручну черезcomponentRef.destroy().
- Особливості:
- Якщо ви створюєте компонент динамічно, hooks спрацьовують лише після вставки його в контейнер (
ViewContainerRef). - Для керування вхідними даними (
@Input) їх потрібно присвоїти до або одразу після створення, інакшеngOnChangesможе не спрацювати.
Іншими словами, для динамічно створених компонентів життєвий цикл повністю дотримується, просто ви самі контролюєте момент створення і видалення, а Angular викликає hooks у тому ж порядку, що і для статично оголошених компонентів.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.