2017-04-10 30 views
2

有一次,我成功地使用observables在我的Angular 2應用程序中對數組中的對象進行迭代。在我的客戶服務檔案我有這樣的:在對象中定位數組 - 角度2中的可觀察對象

getByCategory(category: string) { 
    const q = encodeURIComponent(category); 
    return this.http.get 
    (`https://api.someurl.com/${this.ver}/clients/category/${q}?apikey=${this.key}`) 
     .map((response: Response) => response.json()) 
     .catch(this.stageErrorsHandler); 
} 
    stageErrorsHandler(error: Response) { 
    console.error(error); 
    return Observable.throw(error.json().error || 'Server error'); 
} 

我當時我訂閱我的組件的ngOnInit生命週期掛鉤,像這樣:

ngOnInit() { 
    this.clientService.getByCategory('consulting') 
     .subscribe(resRecordsData => this.records = resRecordsData, 
     responseRecordsError => this.errorMsg = responseRecordsError); 
} 

在組件中,我也開始記錄是空數組:

records = []; 

然後在我看來,我遍歷數組的記錄是這樣的:

<tr *ngFor="let record of records"> 

現在我們在api/server上的數據配置已經改變了。我曾經把目標定在數組,即是這樣的:

[ 
    { 
    "id": "someid", 
    } 
] 

...我需要改變這個到現在針對所謂的「數據」的陣列,位於內的對象。它看起來像這樣:

{ 
    "count": 1000, 
    "data": [ 
     { 
     "id": "someid", 
     } 
    ] 
} 

簡單的問題,我很難過:我如何在這樣的對象內定位一個數組?我需要在對象內部定位數組,因爲這是* ngFor需要的,以便能夠迭代。

+3

嘗試讓records.data記錄?或初始化記錄:this.records = resRecordsData.data? – floor

+0

好主意。讓我嘗試一下。 – Muirik

+0

讓我知道它是否工作 – floor

回答

2

你可以嘗試針對陣列中的記錄:

<tr *ngFor="let record of records.data"> 

你可以設置記錄數據,數據檢索:

this.records = resRecordsData.data 
相關問題