2017-04-19 99 views
1

我想從可觀察數組中的一個對象中獲取一個屬性。除了隔離一個對象並獲取各個屬性之外,我可以獲得所有內容。Angular 2訂閱可觀察數組的屬性

這裏的服務方法,多數民衆贊成成功獲取數組:

getItems(): Observable<IItem[]> { 
    return this.get(this.baseUrl + '/items') 
     .map((res: Response) => <IItem[]>res.json()) 
     .do(data => console.log("Items: " + JSON.stringify(data))) 
     .catch(this.handleError); 
    } 

試圖得到的只是一個對象不工作:

getItem(name: String): Observable<IItem> { 
    return this.getItems() 
     .map((items: IItem[]) => items.find(item => item.name === name)) 
     .do(item => console.log("Item: " + item)) 
     .catch(this.handleError); 
    } 

組件

this._itemsApi.getItem("test") 
     .subscribe(
     item => this.testItem = item, 
     error => this.errorMessage = <any>error); 

模板

<widget icon="file" [count]="testItem?.value"> 

JSON

["name: test, value: 1","name: test2, value: 0"] 
+0

你有任何控制檯嗎?有什麼錯誤? – IsuruAb

+0

只是未定義在控制檯輸出 – beachCode

+0

你的意思是'項目:undefined' – IsuruAb

回答

1

你有一個字符串數組,而不是對象的數組。 重新格式化您的API以返回對象數組 - > [{「key」:「value1」},{「key」:「value2」}]。然後,您可以迭代這些對象並使用item.value來獲取給定項目的值。