【发布时间】:2017-05-16 09:13:47
【问题描述】:
我有以下服务来适应我的应用中的全局微调器:
import {
Injectable
} from '@angular/core';
import {
Observable
} from 'rxjs/Observable';
import {
ReplaySubject
} from 'rxjs/ReplaySubject';
@Injectable()
export class SpinnerService {
private visible = new ReplaySubject < boolean > ();
showSpinner() {
this.visible.next(true);
}
hideSpinner() {
this.visible.next(false);
}
getSpinnerVisibility(): Observable < boolean > {
return this.visible.asObservable();
}
}
然后在我的主应用程序组件中的router-outlet 上方:
<app-spinner *ngIf="spinnerService.getSpinnerVisibility() | async "></app-spinner>
问题是,这里的async 管道是否应该正常运行以取消订阅而不会从这个ReplaySubject 中泄漏内存,还是我必须手动取消订阅?
【问题讨论】:
-
异步管道会自动取消订阅。