我正在尝试调用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时是有特殊情况的。