Если вы отмените подписку на событие в Angular Service? - PullRequest
0 голосов
/ 25 октября 2018

У нас есть несколько сервисов 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 () кажется хорошей практикой, особенно для наблюдателей, потому что они останутся, даже если вы уничтожитеcomponent.

С другой стороны, служба одноязычная в Angular.Самое большее, только один экземпляр службы должен когда-либо существовать в одно и то же время, и он будет уничтожен, когда приложение будет уничтожено, так что, возможно, отписаться не нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...