Я создаю компоненты динамически, используя службу. Компонент создан, но внешний вид жизненного цикла ngOnDestroy
не вызывается.
Ниже приведен код моего служебного файла.
@Injectable()
export class CreateComponentService implements OnDestroy {
private rootViewContainer: ViewContainerRef;
private componentFactory: ComponentFactory<any>;
private componentReference;
constructor(private componentFactoryResolver: ComponentFactoryResolver) {}
setRootViewContainerRef(view: ViewContainerRef): void {
this.rootViewContainer = view;
}
createComponent(content, type) {
this.componentFactory = this.componentFactoryResolver.resolveComponentFactory(type);
this.componentReference = this.rootViewContainer.createComponent(this.componentFactory);
this.componentReference.instance.contentOnCreate(content);
}
ngOnDestroy() {
// Destroy components to avoide memory leaks
this.componentReference.destroy();
}
}
В Component.ts
constructor(private service: CreateComponentService) {}
data.forEach(response => {
this.service.createComponent(response, type);
});
Пожалуйста, покажите мне лучший способ уничтожить экземпляр компонента
CreateComponent
- person Al-un   schedule 21.03.2019ngOnDestroy
. - person stack s   schedule 21.03.2019ngOnDestroy
никогда не вызывается. Если вы хотите уничтожить компонент, обрабатываемый службой, вам понадобится методdestroyComponent
и вызовите его соответствующим образом. - person Al-un   schedule 21.03.2019SadComponent
, либоHappyComponent
==> вы говорите об уничтожении этих компонентов, верно? - person Al-un   schedule 21.03.2019