2016-11-13 36 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有特殊情况。