【发布时间】:2020-09-09 19:08:28
【问题描述】:
我有一个服务,我向其传递了一个值,因此该值可供所有需要它的组件使用:
setAnalysisStatus(statuses: AsyncAnalysis[]) {
this.analysisStatus.next(statuses);
}
我有一个使用按钮单击显示的组件。显示的组件调用另一个方法订阅analysisStatus
getAnalysisStatus(): Observable<AsyncAnalysis[]> {
return this.analysisStatus.asObservable();
}
组件订阅如下:
ngOnInit(){
this.changeGroupService.getAnalysisStatus()
.subscribe(result => {
result.forEach(item => {
this.changeGroupStatus.forEach((changeGroup, index) => {
if (item.changeGroupId === changeGroup.id) {
this.changeGroupStatus[index].name = this.changeGroupStatus[index].name;
this.changeGroupStatus[index].status = item.status;
}
});
});
});
}
当我触发该组件时,它会显示analysisStatus 的当前状态。但是,当它的状态发生变化时,组件不会更新。如果我关闭然后重新打开该组件,它会显示新状态。我需要它来显示状态并在analysisStatus 的状态发生变化时更新。
analysisStatus 是这样设置的:
analysisStatus = new BehaviorSubject<AsyncAnalysis[]>([]);
我的假设是通过this.changeGroupService.getAnalysisStatus() 订阅应该寻找更新this.changeGroupStatus 中的值。我错过了什么吗?
编辑---
所以在我的ngOnInit 中检查this.changeGroupService.getAnalysisStatus() 我可以看到result 的值实际上会根据需要进行更新,但模板不会更新以反映更改。
【问题讨论】:
标签: angular observable behaviorsubject