我有两个从Angular 8服务返回的可观察对象。一个获取网格的列定义,另一个获取网格数据。我使用Ag-grid绑定到行数据和列定义的两个组件属性。
我需要这两个数据集来计算出每列中的最新日期。返回网格数据的时间总是比返回列定义的时间长得多。列定义几乎是即时的。网格数据大约需要10秒。
目前,我使用forkjoin来等待,直到两个可观察对象都返回它们的数据。然后设置绑定的属性。在此过程中,我希望在我的列定义可用时立即更新它们。在填充列定义之前,用户会认为网格看起来像是被破坏了。
我可以重用列定义observable的结果,而不需要再次调用observable吗?
下面是我的代码
let gridDataObservable= this.gridDataService.getItems();
let columnDefinitionObservable = this.columnDefinitionService.getItems();
forkJoin([gridDataObservable,columnDefinitionObservable]).subscribe(results => {
this.rowData= results[0];
this.columnDefs = results[1];
this.latestDates = GetDates(this.rowData,this.columnDefs);
}
发布于 2020-04-09 00:06:06
既然听起来你的两个观察点都是一次性的,我认为最简单的事情就是不要将它们组合在一起。只需单独订阅每一个。
发布于 2020-04-09 06:08:13
const columnDefinitionObservable = this.columnDefinitionService.getItems();
const gridDataSubject = new BehaviorSubject<YourType|undefined>(undefined);
this.gridDataService.getItems().subscribe(gridDataSubject)
const target$ = combineLatest(columnDefinitionObservable, gridDataSubject)
为gridData提供一个未定义的初始值。如果首先触发columnDefinitionObservable,您将获得column,undefined,然后column,gridData
如果gridData首先触发,您将直接获取column,gridData。
https://stackoverflow.com/questions/61110417
复制相似问题