Angular组件变量是否应在ngOnDestroy()中设置为null?

时间:2018-04-12 18:11:27

标签: angular ondestroy

Angular文档说

  

ngOnDestroy():在Angular破坏指令/组件之前进行清理。取消订阅Observable并分离事件处理程序以避免内存泄漏。   在Angular破坏指令/组件之前调用。

一些开发人员说组件属性(类变量)也应该设置为null以避免内存泄漏。这是真的吗?

export class TestComponent implements OnInit, OnDestroy {

  public name: string;
  constructor() { }

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

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

}

1 个答案:

答案 0 :(得分:7)

不,你不需要那个。 Component只是一个类,当它显示时,就会创建一个实例。当组件被销毁时,关联的对象将被保留而不会被引用,并且它将尽快被垃圾收集。

正如文档所说,你只需要在那些情况下使用Observables和事件处理程序,因为如果它们处于活动状态,它们就不会被垃圾收集器删除。

  

取消订阅Observable并分离事件处理程序以避免记忆   泄漏