带有api请求的角RxJS映射<Observable []>

Lou*_*s R 0 rxjs angular

在我的路由解析器之一中,我想获取通过API调用返回的动物(Animal [])的列表。对于每种动物,我都需要一个额外的api调用来获取品种名称。我尝试了这个:

return this.apiService.get('/api/v1/website/' + environment.web_id + '/useraccount/' + user.id + '/animal').pipe(
  map(animals => animals.map(animalObs => {
    // return animalObs;
    return animalObs.pipe(
      map((animal: Animal) => {
        animal.ani_breed = this.breedService.get(animal.anb_id).pipe(
          map(breed => {
            return breed.anb_name;
          })
        );
        return animal;
      }),
    );
  })),
);
Run Code Online (Sandbox Code Playgroud)

但是我在编译时遇到错误:类型'Observable'不能分配给类型'string'。[2322]

我想我缺少了一些东西...请帮助!

mar*_*tin 5

实际的实现取决于您要按顺序还是并行运行请求,但是可以像下面这样执行示例:

this.apiService.get('/api/v1/website/' + environment.web_id + '/useraccount/' + user.id + '/animal').pipe(
  mergeMap(animals => {
    const animals$ = animals.map(animal => this.breedService.get(animal.anb_id).pipe(
      map(breed => {
        animal.ani_breed = breed;
        return animal;
      })
    ))

    return forkJoin(...animals$);
  }),
);
Run Code Online (Sandbox Code Playgroud)