Возможно, вы сможете создать общую службу, которую вы будете сообщать, когда компоненты, которые вы хотите вызвать в хуках жизненного цикла, такие как ngOnInit
, ngOnDestroy
и т. Д.
@Injectable({
providedIn: 'root'
})
export class LifeCycleHookService{
private hookSubject = new Subject<any>();
onHookFired = this.hookSubject.asObservable();
// component: Component - Reference to the component
// hookType: Enum | string - OnInit, OnDestroy etc.
fireHook = (component, hookType) => {
this.hookSubject.next({component, hookType});
}
}
Затем в родительском компоненте вы можете подписаться на onHookFired
услуги.
@Component(
...
)
export class ParentComponent implements OnInit{
constructor(private hookService: LifeCycleHookService){}
ngOnInit(){
this.hookService.onHookFired.subscribe((event) => {
// event.component
// event.hookType
})
}
}
Затем в ваших дочерних компонентах вы можете сообщить службе о перехватах жизненного цикла.
@Component(
...
)
export class ChildComponent implements OnInit, OnDestroy{
constructor(private hookService: LifeCycleHookService){}
ngOnInit(){
this.hookService.fireHook(this, 'onInit');
}
ngOnDestroy(){
this.hookService.fireHook(this, 'onDestroy');
}
}
Надеюсь, что это дает вам подсказку.