使用mergeMap处理嵌套的可观察对象并将参数传递给子订阅

时间:2019-11-20 15:44:39

标签: javascript angular rxjs

我想以适当的方式应用嵌套的可观察变量

我必须观察到,我将使用外部可观察到的响应并将其用于儿童可观察到的

this.selectedSchedulings$.pipe(switchMap(actualTrips => {
  return this.selectedDataByBranch$
})).subscribe(data => {
  this.trainsDatasets = this.getDatasets(data);
  return actualTrips
});

SelectedDataByBranch是ngrx选择器

selectedDataByBranch$ = this.store.pipe(select(selectBranchDirections, 'b1'));

实际上我收到错误Cannot find name actualtrips

如何将参数传递给子订阅?

一种解决方案是将actualTrips保存在全局变量中,但我会做得更干净。

1 个答案:

答案 0 :(得分:1)

您可以在switchMap的返回中使用forkJoin,如下所示:

this.selectedSchedulings$.pipe(
   switchMap(actualTrips => 
       return forkJoin([
            this.selectedDataByBranch$,
            of(actualTrips)
       ]);
   })
).subscribe(([selectedDataByBranch, actualTrips]) => {
     this.trainsDatasets = this.getDatasets(selectedDataByBranch);
     return actualTrips;
});

如果selectedDataByBranch $是可连续观察的,则可以将forkJoin更改为combineLatest