[英]Generic build request method response undefined
我为我的所有api调用创建了通用的构建请求方法。 响应可以,但是未在此方法之外传递。
我的api.ts类(摘要)
buildRequest(url, method, body?) {
let options = new RequestOptions({
url: this.apiUrl + url,
method: method,
body: body
});
let req = new Request(options);
return this.http.request(req)
.map(res => {
res.json();
})
.catch(this.handleError);
}
handleError(error: any) {
return Observable.throw(error.message);
}
在同一个类中,我定义了所有调用,如下所示:
getItem() {
return this.buildRequest('url', RequestMethod.Get)
}
然后从一个组件
this.api.getItem().subscribe(res => {
this.item = res;
}
})
在.map内的其他任何地方,res都是undefined 。 当我用常规
返回this.http.get(...)
并在此处显示相同的逻辑,效果很好。 我究竟做错了什么?
我要导入这两个:
从'rxjs / Observable'导入{Observable};
导入'rxjs / Rx'
在您的buildRequest
方法中,您犯了一个小错误。 当使用带有花括号的lambda表达式时,您必须返回以下内容:
x => x.Field // <-- this is a shorthand
等于
x => { return x.Field; }
因此, .map
调用中的代码应如下所示:
return this.http.request(req)
.map(res => {
return res.json();
})
.catch(this.handleError);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.