У меня есть случай, в котором у меня есть набор идентификаторов, которые я восстанавливаю из route.params
, например:
const ids$ = this.route.params.pipe(
map(params => {
const modelId = +params['modelId'];
const deliverId = +params['deliverId'];
const compositionId = +params['compositionId'];
return { modelId, deliverId, compositionId };
})
);
После этого мне нужно восстановить объект composition
с сервера, поэтому я делаю это:
const getComposition$ = ids$.pipe(
switchMap(ids =>
this.compositionsService.getComposition(ids.compositionId)
)
);
А теперь я хочу иметь агрегированный объект с двумя первыми идентификаторами и вместо последнего (compositionId
) объект composition
, я имею в видуэто:
entities: {
modelId: number;
deliverId: number;
composition: Composition;
};
Итак, я делаю это:
const aggregated$ = forkJoin(ids$, getComposition$).pipe(
map(arr => ({
modelId: arr[0].modelId,
deliverId: arr[0].deliverId,
aggregated: arr[1]
}))
);
И затем я подписываюсь на него:
const aggregated$.subscribe(aggregated => {
console.log(aggregated);
});
Но он никогда ничего не печатает на консоли,Интересно, что если я проверяю, сделан ли вызов серверу, это действительно так, но последнее наблюдаемое (aggregated$
) никогда ничего не излучает.
Что я делаю не так?Есть ли лучший способ добиться этого?