Как добавить дополнительную ценность от одного наблюдаемого к другому?

#angular #rxjs

Вопрос:

Предполагая, что у нас есть следующий код:

 observable$ = this.someObservable$.pipe(
    switchMap(values => {
         return forkJoin(values
            .map(value => this.someService.getByName(value.name)));
    }
} // Returns an Array
 

Из сервиса, который я получаю {foo: ‘yay’, bar: ‘yayay’}, но я хотел бы добавить значение.имя из » Некоторого наблюдаемого$», поэтому в конце оно выглядит так: {foo: «да», бар: «да», поисковый запрос: «Автомобиль»}.

Интерфейс уже выглядит так:

 foo: string;
bar: string;
searchTerm: string;
 

Каков был бы способ достичь этого? Мне уже потребовалось много времени, чтобы разобраться в текущем коде (все еще много узнаю о наблюдаемых/RxJS)

Ответ №1:

Вы можете map наблюдать, что производится службой:

 observable$ = this.someObservable$.pipe(
  switchMap(values => forkJoin(
    values.map(value =>
      this.someService.getByName(value.name).pipe(map(data => ({
        ...data,
        searchTerm: value.name
      })))
    )
  ))
);
 

Комментарии:

1. Огромное спасибо. Это так просто и в то же время так сложно 🙂