D3.js 如何捕捉已移除组件的Angular2 onDestroy
我有一个在加载数据时添加为占位符的组件。加载数据后,它将用实际数据覆盖此组件。不幸的是,这个components Ngondestory()方法从未被调用,因此它只是在后台不断运行,并且从未被删除。如何确保在移除时捕获并正确处置?代码如下: template.htmlD3.js 如何捕捉已移除组件的Angular2 onDestroy,d3.js,angular,D3.js,Angular,我有一个在加载数据时添加为占位符的组件。加载数据后,它将用实际数据覆盖此组件。不幸的是,这个components Ngondestory()方法从未被调用,因此它只是在后台不断运行,并且从未被删除。如何确保在移除时捕获并正确处置?代码如下: template.html <div class="row status"> <div class="small-6 columns indent">SOME DATA</div> <
<div class="row status">
<div class="small-6 columns indent">SOME DATA</div>
<div id='data_id' class="small-6 columns">
<!-- This is the component that will be removed and replaced -->
<app-loading-dots></app-loading-dots>
</div>
</div>
加载点。ts
update_view(new_data, selector): void {
var text_element = d3.select(selector);
this.tween_it(text_element, new_data, 5000);
}
export class LoadingDotsComponent implements OnInit, OnDestroy {
/* Other code... */
constructor() {}
ngOnDestroy() {
console.log("Destroyed");
clearInterval(this.interval);
}
/* ... */
}
基本上,component_remover获取新数据,即一个数字,并将其从0变为新数字,然后将新文本写入text_元素。这会覆盖我的模板中的app\u loading\u dots组件,但我听不到ngondestry调用。有什么办法可以妥善处理吗 如果我理解正确,您的组件不会被angular移除。 这意味着angular不知道组件已损坏,也不会触发Ngondestory。
如果要删除组件,请使用ngIf或动态添加组件,以便可以控制何时删除组件。除了@guilHermeireles的建议外,您还可以在覆盖数据之前自己调用OnDestroy函数。请参阅了解如何使用,谢谢您的评论!我想我将使用*ngIf在我的组件中创建一个布尔值来跟踪何时需要显示组件,并使用*ngIf指令来显示它。谢谢