为啥响应在服务中可用但在组件中未定义? [复制]
Posted
技术标签:
【中文标题】为啥响应在服务中可用但在组件中未定义? [复制]【英文标题】:Why is the response available in a service but in the component is undefined? [duplicate]为什么响应在服务中可用但在组件中未定义? [复制] 【发布时间】:2018-04-07 13:17:11 【问题描述】:我有一个服务和一个使用该服务的组件。问题是在服务中我可以读取作为 JSON 对象的响应。但在组件中,我得到以下信息:res: undefined
。
服务:
constructor(
private http: Http,
private fbuilder: FormBuilder,
private user: UserService
)
login(uname:string, pass:string): Observable<any>
let headers = new Headers(
'Content-Type': 'application/json',
'Username':uname,
'Password':pass
);
let options = new RequestOptions( headers: headers );
let data = ;
var Observable = this.http.post( url, data, options )
.map(res =>
res.json();
)
.catch( (error: any) => Observable.throw(error.json().error || 'Server error') );
return Observable;
组件:
constructor(
private http: Http,
private fbuilder: FormBuilder,
private user: UserService
)
loginUser(uname: string, pass: string)
this.user.login(uname, pass).subscribe(
res =>
console.log('res: ' + JSON.stringify(res));
,
err =>
this.errorMessage = err;
);
【问题讨论】:
【参考方案1】:您的问题似乎与此代码有关:
.map(res =>
res.json();
)
您没有返回res.json
的结果。您只需要添加return
语句,如下所示:
.map(res =>
return res.json();
)
您也可以删除 对,如下所示:
.map(res => res.json())
【讨论】:
哦。我的错。你说得对!之前有同样的问题,发现我必须返回res.json()
。问题解决了。是的,删除
会节省一些代码,但我想打印出 res。在console
.以上是关于为啥响应在服务中可用但在组件中未定义? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥在使用 Promise 时在类方法中未定义“this”? [复制]