2016-11-13 27 views
0

我正在嘗試調用Rails後端API並返回一些簡單的數據 - 一組模型。例如,我有一個汽車模型,它具有製造,年份和價格的屬性。將數據從Rails API反序列化到Angular 2模型

Angular 2模型的定義相似。

在使HTTP GET來電Rails應用程序:

class CarsController < ApplicationController 
    respond_to :json 

    def index 
     respond_with Car.all.order(:make) 
    end 
end 

導軌應用程序將返回數據作爲對象的JSON陣列,它們各自包裝在一個對象:

[ { car: { year: 2017, Make: Honda, Model: Accord } }, 
    { car: { year: 2010, Make: Toyota, Model: Solara } } 
] 

etc

Angular2例程調用並轉換返回的數據:

getCars(): Observable<Car[]> { 
    return this.http.get(this.url) 
        .map(this.extractData)  
        .catch((res: Response) => this.handleError(res)); 
    } 

    private extractData(res: Response) { 
    let body = res.json(); 
    return body || { }; 
    } 

不起作用 - 它返回一個空對象,因爲它期望數據不會將每個對象都包含在另一個對象中。

如何讓Angular2做正確的事情?我怎樣才能轉換返回的數據,所以Angular2會正確地填充我的汽車數組?

(我不能相信搜索時,我無法找到這個問題的任何參考!)

感謝。

回答

0

我認爲這個問題可能是因爲你發回的是一個數組作爲響應而不是鍵值對。如果我沒有記錯,當API返回數組時,AngularJS有特殊情況。