2016-02-15 184 views
3

我有一項服務,它可以創建新刀片並將其保存在刀片陣列中。我使用「DynamicComponentLoader」展示這個刀片。 現在我想從另一個刀片上刪除我的刀片。但我怎麼能做到這一點?Angular2以編程方式刪除組件。

+0

答案: [http://stackoverflow.com/questions/34585357/how-到破壞,所有的組件創建的-使用-dynamiccomponentloader合安古拉](http://stackoverflow.com/questions/34585357/how-to-destroy-all-the-components-created-using-dynami ccomponentloader-in-angula) –

+1

[如何銷燬在angular2中使用DynamicComponentLoader創建的所有組件?](http://stackoverflow.com/questions/34585357/how-to-destroy-all-the-components-created -using-dynamiccomponentloader-in-angula) – nycynik

回答

5
export class YourComponent { 
    constructor(private ref:ElementRef) {} 

    someFunc() { 
    elementRef.nativeElement.querySelector('some-elem').destroy(); 
    } 
} 

你也可以使用一個包裝元素

<div #wrapper><dynamic-component></dynamic-component> 

然後用

@ViewChild('wrapper') wrapper; 
... 
someFunc() { 
    while (myNode.firstChild) { 
    myNode.removeChild(myNode.firstChild); 
    } 
} 
+0

謝謝,GünterZöchbauer。但是這是從DOM中刪除。例如,如果我在組件中有ngOnDestroy(),它不會執行。 Angular不知道該組件已被刪除。 –

+4

@АлексейСерафимов:您可以使用http://stackoverflow.com/q/34093670/4715679中描述的方法 - 即:將引用傳遞給創建的組件,並調用其上的'dispose()'方法。 – BlueM

+1

請注意.dispose()是自測試版以來的destroy().16 – schellmax