我花了很多时间来解决这个问题。
我让webapi返回json,如:
{
"id": 1,
"name": "testName",
"address": [
{
"id": 6,
"address_name": 'testname'
},
{
"id": 6,
"address_name": 'testname'
}
]
}
在angular2我有这样的服务:
public getRoutes():Observable<Route[]>
{
return this.http.get(this.BASE_API_URL+'/Routes')
.map(res=>res.json());
}
在组件中我有一段代码来检索数据到数组变量
this.routeService.getRoutes().subscribe(
(routes) => {
for(let route of routes){
mainInstance.routes.push(route);
}
console.log("Routes filled");
}
);
json结果包含填充的简单属性,如id或name,但内部数组地址为空。你知道伙计我工作不好吗? 感谢您的任何建议
答案 0 :(得分:0)
在我看来,你正在返回一个带有嵌套数组的对象,但是你试图将父对象本身视为一个数组。
如果您提供服务退货
{
"id": 1,
"name": "testName",
"address": [
{
"id": 6,
"address_name": 'testname'
},
{
"id": 6,
"address_name": 'testname'
}
]
}
然后更新服务功能的签名:
public getRoutes():Observable<Route>
{
return this.http.get(this.BASE_API_URL+'/Routes')
.map(res=>res.json());
}
其中Route
是一个如下所示的界面:
export interface Route{
id:number;
name:string;
address: Address[];
}
export interface Address{
id: number;
address_name: string;
}
如果您想在组件中使用address
数组,那么访问该属性,如下所示:
this.routeService.getRoutes().subscribe(
routes => {
for(let route of routes.address){
mainInstance.routes.push(route);
}
console.log("Routes filled");
}
);
这样您就可以访问address
字段,特别是数组,而不是父对象。