Я думаю, у меня есть рецепт, который вы (или будущие странники) ищете.Вы должны сопоставить начальную полезную нагрузку (оператор of
ниже) с внутренней наблюдаемой, чтобы ее можно было передать по конвейеру и передать в качестве параметра withLatestFrom
.Затем mergeMap
сгладит его, и вы сможете вернуть его следующему оператору как один массив с начальной полезной нагрузкой в качестве первого значения.
map(action => action.payload),
mergeMap((id) =>
of(id).pipe(
withLatestFrom(
this.store.pipe(select(state => getEntityById(state, id))),
this.store.pipe(select(state => getWhateverElse(state)))
)
),
(id, latestStoreData) => latestStoreData
),
switchMap(([id, entity, whateverElse]) => callService(entity))