2017-04-25 143 views
0

我試圖合併2個可觀測物。第一個可觀察到的持有ShoppingCart類,第二個持有ShoppingItems列表。我想將觀察點與購物車項目(Observable<ShoppingItems)映射到名爲shoppingList$ShoppingCart類中的實例變量。將2個可觀察物合併/合併成一個

可觀察到1:Observable<ShoppingCart>

這裏的購物車類的一個片段。

可觀察2:Observable<ShoppingItems[]> 私人觀察到的:可觀察

這裏是我使用的功能。

retrieveShoppingCartComplete(shoppingCartId: string): Observable<ShoppingCart> { 

/**Returns the requested shopping cart, with the Ids of the shopping items in an array called shoppingCart.ShoppingItems*/ 
    let shoppingCart$ = this.retrieveShoppingCart_AsEntity(shoppingCartId); 


/** returns an Observable<ShoppingItems[]> of the requested ShoppingItems as entitys*/ 
    let shoppingItems$ = shoppingCart$.map(shoppingCart => this.leS.retrieveShoppingItemsComplete(shoppingCart.ShoppingItemsIds)) 

    return shoppingCart$.combineAll(shoppingItems$); 
} 

但是上述方法返回一個Observable<[ShoppingCart | ShoppingItems[]]>不與ShoppingCart

回答

0

分配給shoppingList$實例變量Observable<ShoppingItems>陣列的Observable<ShoppingCart>我覺得combineAll是不是你需要在這裏。我會用flatMap連接兩個服務電話,如下所示:

retrieveShoppingCartComplete(shoppingCartId: string): Observable<ShoppingCart> { 
    return this.retrieveShoppingCart_AsEntity(shoppingCartId) 
     .flatMap(shoppingCart => { 
      shoppingCart.shoppingList$ = this.leS.retrieveShoppingItemsComplete(shoppingCart.ShoppingItemsIds) 
     }) 
}