将数据从Rails API反序列化到Angular 2模型



我正在尝试调用Rails后端API并返回一些简单的数据-一个模型数组。例如,我有一个汽车模型,它有制造、年份和价格等属性。

Angular 2的模型也是这样定义的。

对Rails应用程序进行http get调用时:

class CarsController < ApplicationController
    respond_to :json
    def index
        respond_with Car.all.order(:make)
    end
end

rails应用程序将返回数据作为一个jSON数组的对象,每个对象都包装在一个对象中:

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

要调用并转换返回数据的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将正确填充我的汽车数组?

(我简直不敢相信我在搜索时找不到任何关于这个问题的参考!)

谢谢。

我认为问题可能是你发送回一个数组作为响应,而不是键值对。如果我没记错的话,AngularJS在API返回array时是有特殊情况的。

最新更新