У нас есть несколько сервисов 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.Самое большее, только один экземпляр службы должен когда-либо существовать в одно и то же время, и он будет уничтожен, когда приложение будет уничтожено, так что, возможно, отписаться не нужно?