【发布时间】:2016-05-26 13:11:30
【问题描述】:
我有一项服务,它创建新刀片并将其保存在刀片阵列中。我使用“DynamicComponentLoader”展示了这个刀片。 现在我想从另一个刀片中删除我的刀片。但我怎么能做到这一点?
【问题讨论】:
标签: angular
我有一项服务,它创建新刀片并将其保存在刀片阵列中。我使用“DynamicComponentLoader”展示了这个刀片。 现在我想从另一个刀片中删除我的刀片。但我怎么能做到这一点?
【问题讨论】:
标签: angular
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);
}
}
【讨论】:
ComponentRef 的引用传递给创建的组件并在其上调用dispose() 方法。
display: none 和 remove()(现在是 destroy())完全不同。 display: none 只是 CSS,只是使宿主元素不可见,并且可以通过例如设置 display: block 使其可见,而 destroy() 破坏组件,从 DOM 中删除宿主元素,并且只能通过使用重新添加ViewContainerRef.createComponent().