我正在使用angularJS2中的一个项目,并使用带有observable的$ http来解析来自其他API的JSON,这是我的代码。
服务
getSingleKey(id:any){
var headers = new Headers();
headers.append('content-Type','application/json');
return this.http.get(
'http://192.168.1.59/keyapp/api/getKeyspiration/'+id+'.json'
).map(res => res.json());
}
组件:
private dataKey: Object = {};
this.keyService.getSingleKey(this.id)
.subscribe(
data=>
{
console.log(data.data),
this.dataKey=data.data
},
error=>console.log(error)
);
的console.log(this.dataKey);
我收到以下回复:
GET
localhost/keyapp/api/getKeyspiration/15.json [HTTP/1.1 200 OK 398ms]
//对console.log(data.data)的响应
Object { k_id: 15, k_u_id: 5, k_type: 3, k_title: "vaibhav", k_text: "", k_data: "2024067187.png", k_thumb: "", k_added_date: "2016-11-24T06:10:23+0000" }
// response for console.log(this.dataKey)
Object { }
简而言之,我正在获取响应数据但是我如何将响应对象分配给我的类对象,我错过了我的代码中的内容。提前感谢您的帮助。
答案 0 :(得分:1)
由于@JBNizet在评论部分提到了问题,您正在记录一个异步期望的值。
您的getSingleKey()
方法是一种异步方法,这意味着您无法猜出响应何时到达(网络速度等)。
您必须在异步函数的回调中执行您计划对响应做的任何事情:
private dataKey: Object = {};
this.keyService.getSingleKey(this.id)
.subscribe(
data=>
{
console.log(data.data),
this.dataKey=data.data;
console.log(this.dataKey); //will be defined since it is in the async functions
//callback scope, so do whatever you want to do with this.dataKey here
},
error=>console.log(error)
);
console.log(this.dataKey); //will be undefined since it is out of the async functions callback scope