В моем приложении Angular есть список конкретной модели. Каждый элемент этого списка имеет свойство xyzList
. Это свойство xyzList
должно быть заполнено из запроса, который зависит от идентификатора первого запроса. Вот пример:
Модель
{
id: number;
name: string;
xyzList: any[]
}
Теперь у меня есть два запроса:
Запрос 1 : Заполняет модель, но не xyzList
this.myVar$ = this.myService.getElements<Model[]>();
Запрос 2 : заполнить xyzList
this.myService.getXyzElements<XyzModel[]>(idOfTheModelOfTheFirstRequest);
Сначала я подумал что-то вроде этого:
this.myService.getElements<Model[]>()
.pipe(
mergeMap(items => items)
mergeMap(item => {
return this.myService.getXyzElements<XyzModel[]>(item.id)
.pipe(
map(xyzList => {
item.xyzList = xyzList
return item;
})
)
})
)
Это не работает, так как я сгладил свой список, и мне нужен Observable<Array[]>
, но я думаю, более или менее ясно, чего я хочу достичь. Я предполагаю, что могу достичь этого, например, с помощью forkJoin
, но я не знаю, как. Или есть способ преобразовать плоский список обратно в список?