提问者:小点点

应该在ngOnDestroy()中将Angular组件变量设置为null吗?


角度留档说

ngOnDestroy():在Angular销毁指令/组件之前进行清理。取消订阅可观察对象并分离事件处理程序以避免内存泄漏。就在Angular销毁指令/组件之前调用。

有开发者在说,组件属性(类变量)也应该设置为空,避免内存泄漏。这是真的吗?

export class TestComponent implements OnInit, OnDestroy {

  public name: string;
  constructor() { }

  ngOnInit() {
    this.name = 'John';
  }

  ngOnDestroy() {
   // is this code really necessary.
   this.name = null;
  }

}

共2个答案

匿名用户

不,你不需要那个。组件只是一个类,当它被显示时,一个实例被创建。当组件被销毁时,相关的对象没有被引用,它将尽快被垃圾回收。

正如留档所说,您只需要在可观察对象和事件处理程序的情况下使用,因为如果它们处于活动状态,垃圾收集器不会删除它们。

取消订阅可观察对象并分离事件处理程序以避免内存泄漏

匿名用户

是的,你需要这样做。当我将数据存储在变量中并在不同子组件之间切换时调用ngOnDestroy时,我遇到了同样的问题。

该组件希望它会被自动删除,但它没有,数据没有从该变量中删除,因此在ngOnDestroy中将其设置为null对我有帮助。

ngOnDestroy(){  this.home=null;}