我的服务:
fetchData(url,request)
{
return this.http.post(this.apiUrl+url,request).subscribe(
(response) => {return response.json()}
);
}
我的组件:
ngOnInit()
{
this.response = this.dataService.fetchData('friends/grow_network',{});
console.log('s ',this.response);
}
如果我在服务中控制response.json()它会显示来自api的正确数据但是如果我在组件中控制它会显示如下:
Subscriber {closed: false, _parent: null, _parents: null, _subscriptions: Array(1), syncErrorValue: null…}
如何获取来自api而非订阅者数据的组件中的数据?
答案 0 :(得分:2)
您可以在角度中使用Observables。请查看以下讨论
Angular - Promise vs Observable
现在尝试以下代码而不是组件中的代码
this.response = this.dataService.fetchData ('friends/grow_network'{})
.subscribe(res=> { console.log(res);
}), error => alert(error);
您的服务代码应为
fetchData(url,request)
{
return this.http.post(this.apiUrl+url,request).map(
(response) => {return response.json()}
);
}
答案 1 :(得分:2)
当你按照自己的方式行事时,你在变量中写入“响应”可观察对象而不是结果。调用方法时,结果的值尚未存在,因为它将是异步的。
要获得您想要的内容,您必须执行以下操作:
fetchData(url,request)
{
return this.http.post(this.apiUrl+url,request).map(
(response) => {return response.json()}
);
}
ngOnInit()
{
this.response = this.dataService.fetchData('friends/grow_network',{})
.subscribe(result => {
this.response = result;
console.log('s ',this.response);
});
}