Angular 5嵌套的http客户端observable返回对象

问题描述 投票:1回答:1

我正在尝试创建一个可观察的响应,我在其中进行一次http调用,然后在返回响应之前,我再次进行http调用以填充第一个调用的返回对象,如下所示。

getOrderWithItems(orderId: string, includes: Set<OrderInclude>): Observable<OrderDto> {
    return this.getOrder(orderId, includes)
      .map(order => {
        this.searchItems().subscribe(
          items => {
            order.items = items.results;
            return order;
          }
        )
      });
  }

编译器给出错误:类型'Observable'不能分配给'Observable'类型。不知道如何让这个工作。 this.getOrder()和this.searchItems()都映射http调用,返回相应的observable。

angular rxjs angular2-observables angular-httpclient
1个回答
0
投票

您的地图不会返回任何内容。它只订阅另一个Observable。

要将一个Observable转换为另一个(getOrder到searchItems),请使用其中一个平面运算符。在您的情况下,switchMap适合:

this.getOrder(orderId, includes)
  .switchMap(order => 
    this.searchItems()
      .map(items => ({...order, items: items.results}))
  );
© www.soinside.com 2019 - 2024. All rights reserved.