我们有几个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中的单例。最多只能同时存在一个服务实例,并且在销毁应用程序时它将被销毁,因此也许不必取消订阅?