2017-10-10 60 views
0

我遵循英雄之旅指南,但已決定觀察結果比承諾更好,但我在實施它們時遇到問題。將承諾信息轉換爲可觀察

這裏是我的食譜服務:

import { of } from 'rxjs/Observable/of'; 
... 
    getRecipes(): Observable<Recipe[]> { 
    return of(RECIPES); 
    } 

    getRecipe(id: number): Observable<Recipe> { 
    return this.getRecipes() 
     .subscribe(recipes => recipes.find(recipe => recipe.ID === id)); 
    } 

我不知道如何從obvserable陣列獲取特定的可觀察的項目就像我與教程的承諾一樣。

回答

1

你應該使用地圖這種情況下,您的實現可以是以下

getRecipe(id: number): Observable<Recipe> { 
    return this.getRecipes() 
      .map(recipies => recipies.find(x => x.id === id)); 
    } 
+0

什麼是「x」和什麼纔是我真正使用有 – Cacoon

+0

我不好應該是X => x.id ===編號,有錯誤現在正確答案 –

+0

謝謝,所以當我們調用'x'我們從它的父母調用它,所以它可以命名任何東西?我也該如何使用這個可觀察的,我試圖做'ngOnInit():void {th​​is.route.paramMap .switchMap((params:ParamMap)=> this.recipeService.getRecipe(+ params.get(' id'))) .subscribe(recipe => this.recipe = recipe); }'但它並沒有加載項目 – Cacoon