您是否应该取消订阅Angular Service中的事件?

时间:2018-10-25 16:40:20

标签: angular events service singleton unsubscribe

我们有几个Angular服务可以订阅构造函数中的事件。我们正在尝试确定是否有必要在ngOnDestroy()方法中取消订阅该事件。这是代码示例:

import { Injectable, OnDestroy } from '@angular/core';

@Injectable()
export class DebuggerService implements OnDestroy {

  private _subscriptions$: any = [];

  constructor(private _localStorageService: LocalStorageService) {
    this._subscriptions$.push(this._localStorageService.storageChanged.subscribe((event: StorageEvent) => {
      //do something
    }));
  }

  ngOnDestroy(): void {
    for (let subscription$ of this._subscriptions$) {
      subscription$.unsubscribe();
    }
  }
}

一方面,取消订阅ngOnDestroy()中的事件似乎是一个好习惯,特别是对于观察者来说,因为即使您销毁了组件,它们也会留下来。

另一方面,服务是Angular中的单例。最多只能同时存在一个服务实例,并且在销毁应用程序时它将被销毁,因此也许不必取消订阅?

0 个答案:

没有答案