我有从http.get(服务中的函数)
返回的数据return this.http.get('https://randomuser.me/api/').toPromise().then(
response => response.json().results as User[]
).catch(this.handleError);
在组件中,我调用此服务并将我的模型设置为json结果
ngOnInit(): void {
this.userService.getUser().then(
users => this.users = users
);
}
在模板中,我可以使用{{user.email}}
来收发电子邮件。
现在,如果我尝试在http promise.then
中添加一行代码return this.http.get('https://randomuser.me/api/').toPromise().then(
response => {
response.json().results as User[];
console.log(response);
}
).catch(this.handleError);
控制台显示响应对象,但user.email不再显示在页面中。 (控制台没有错误)
答案 0 :(得分:2)
箭头函数要么采用单个表达式,要么隐式返回结果或一系列语句,而不隐式返回。有关详细信息,请参阅箭头函数MDN article。要解决此问题,您需要在箭头函数的末尾显式返回response.json().results
:
return this.http.get('https://randomuser.me/api/').toPromise().then(
response => {
console.log(response);
return response.json().results as User[];
}
).catch(this.handleError);
答案 1 :(得分:0)
只需添加 return
声明
return this.http.get('https://randomuser.me/api/').toPromise().then(
//response => {
// response.json().results as User[];
// console.log(response);
//}
response => {
console.log(response);
// we have to return something here
return response.json().results as User[];
}
).catch(this.handleError);