D3.js 如何捕捉已移除组件的Angular2 onDestroy

D3.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> <

我有一个在加载数据时添加为占位符的组件。加载数据后,它将用实际数据覆盖此组件。不幸的是,这个components Ngondestory()方法从未被调用,因此它只是在后台不断运行,并且从未被删除。如何确保在移除时捕获并正确处置?代码如下:

template.html

    <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指令来显示它。谢谢