我正在使用父级中的按钮创建多个下拉菜单组件,但我希望这些组件具有可以自行销毁的按钮。我确信它很简单,但似乎找不到任何可以做到的东西。我知道如何从父母那里摧毁它,但似乎无法从内部去做。谁知道?就在它被销毁之前,我如何向父母发送消息让它知道? (我在父母中有他们的实例,但在父母中还有其他东西需要信号)
我正在使用viewContainerRef.createComponent
动态创建它们。模板看起来像这样:
<template item-host></template>
我尝试了@Output并得到了这个:
<template item-host [ERROR ->](destroyCheck)="someMethod($event)"></template>
答案 0 :(得分:4)
声明输出变量
@Output() destroyCheck:EventEmitter<string>=new EventEmitter<string>();
ngOnDestroy(){
this.destroyCheck.emit('destroyed');
}
以这种方式处理父组件句柄。
<div>
<child-comp (destroyCheck)="someMethod($event)"> </child-comp>
</div>
您的方法应该作为
处理someMethod(something){
console.log(something);
}
答案 1 :(得分:3)
使用ComponentRef.destroy()
如果使用viewContainerRef.createComponent动态创建组件,则可以使用ComponentRef.destroy()销毁它。您所需要做的就是在组件中查看对自身的引用,例如在示例中:
父母:
...
const componentRef = this.placeholder.createComponent(
this.resolver.resolveComponentFactory(SOMECOMP));
componentRef.instance.viewRef = componentRef;
...
孩子:
viewRef: ComponentRef<SOMECOMP>;
...
this.viewRef.destroy();
...