我正在尝试使用 ComponentRef类来销毁组件,方法是将其作为 private compRef:ComponentRef
注入构造函数中它给出错误:未捕获(在承诺中):错误:没有ComponentRef的提供者!
尝试在组件级别的provider数组和app.module中包含ComponentRef,但是它表示类型ComponentRef不能分配给“Providers”类型。
有关如何实现ComponentRef以便能够使用destroy()方法的任何帮助吗?
谢谢。
答案 0 :(得分:2)
destroy()
方法。这是一个简单的例子:
export class SampleComponent implements AfterViewInit {
@ViewChild("vc", {read: ViewContainerRef}) vc: ViewContainerRef;
constructor(private resolver: ComponentFactoryResolver) {}
ngAfterViewInit() {
const componentFactory = this.resolver.resolveComponentFactory(BComponent)
const componentRef = this.vc.createComponent(componentFactory);
componentRef.destroy(); <-------------------
}
}
如果组件的componentRef
未动态创建,则无法访问。
我需要清除与之相关的所有属性和对象 成分
destroy
方法实际上并未清除组件实例上的任何属性。它只是将视图与视图容器或applicationRef
分离,分离投影视图并更新视图组件的状态。它还会在子组件和嵌入视图上触发destroy
,这些视图执行相同的操作集。
阅读这些文章以获取更多信息: