我从Angular 2开始,我已经初始化了一个子组件“ChildCmp”,在我需要通过单击销毁该组件之后,说:

@Component({
selector: 'main-cmp',
templateUrl: './main-cmp.html',
directives: [ChildCmp]
})
class MainCmp {
    @ViewChild(ChildCmp)
    childCmp: ChildCmp;
    destroyChildClick(){
        this.childCmp.destroy();
    }
}

但是之前的代码无法运行,destroy()是未定义的,并且异常是:



我已经阅读了this thread,并使用了 ViewContainerRef.createComponent(),由此创建的组件是“ComponentRef” 的实例,但是childCmp没有实现“ComponentRef”。

如何实现或注入(inject)destroy方法?

谢谢大家!

最佳答案

试试这个

export class MainCmp {

   @ViewChild(ChildCmp) childRef: ChildCmp;

   destroyClick() {

      if (this.childRef) {
         this.childRef.destroy();
      }
   }
}

09-15 11:57