使用RxJs 6
这是RxJs管道的摘录:
.pipe(
tap((action) => console.log(action)),
// error is on following line
withLatestFrom(this.store.pipe(select(selectBim(action.payload)))),
...
)
IDE中的错误为Cannot find name 'action'
,运行时错误为action is not defined
。
但是在withLatestFrom中,我需要访问action
。我怎样才能做到这一点?谢谢
答案 0 :(得分:3)
我认为您可以只使用flatMap
(mergeMap
的别名)运算符:
.pipe(
flatMap((action) => this.store.pipe(select(selectSim(action.payload)))),
tap((action) => console.log(action)),
...
)
这应该打印第二个可观察值(来自您的store
)。如果同时需要两者,则可以使用forkJoin
或switchMap
,或者仅将action
的值保存到某个外部作用域变量。
答案 1 :(得分:0)
仅作记录,这是有效的方法:
mergeMap((action) => forkJoin(
of(action),
this.store.pipe(select(selectBim(action.payload))).take(1),
this.store.pipe(select(selectCurrentBim)).take(1)
)),
map(([action, requestedBim, currentBim]) => ({requestedBimId: action.payload, requestedBim, currentBim})),
现在我可以访问mergeMap之后的map语句中的所有数据
如果您不需要在withLatestFrom
给出的参数中访问action
,则 withLatestFrom
更简洁