Angular 5
我遇到的问题是,当我离开某个组件时,该组件仍在监听并根据服务订阅更新进行操作。
我的服务
export class GlobalVarsService {
private selectedDepartment = new BehaviorSubject<number>(null);
selectedDepartment$ = this.selectedDepartment.asObservable();
...
}
MyComponent的
ngOnInit() {
this.globalVarsService.selectedDepartment$.subscribe( selectDepartment => {
this.refreshReportData();
});
}
我距离MyComponent
只需3次点击,但如果我更新selectedDepartment
,则订阅仍会启动,this.refreshReportData
将会执行。显然我不想要这个,因为它是额外的HTTP调用,完全没必要。
我尝试实现onDestroy
来验证组件销毁是在我导航的时候发生的。所以从我的角度看,我的被破坏的组件仍然是活动的,并且正在监听订阅事件。 unsubscribe
上还没有this.globalVarsService.selectedDepartment$
方法,因此我无法将其添加到我的onDestroy
方法中。
我该怎么办?
答案 0 :(得分:3)
是的,您必须在ngOnDestroy中取消订阅,但如果您使用Async Pipe,它将自动处理
xhook