我有一个具有请求功能的提供者类。它工作正常:
sendRequest(requestBody:any,URL:string){
let headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json' );
let options = new RequestOptions({ headers: headers });
let body=requestBody;
body.key=this.key;
this.http.post(this.url+URL, body, options)
.subscribe(data => {
let json=JSON.parse(data['_body']);
let toast=this.toast.create({
message:json.response,
duration:3000,
position:'top'
});
toast.present();
return json;
}, error => {
console.log(error);// Error getting the data
});
}
我想调用此方法并希望在另一个类中使用json响应。我试着打电话给诺言,但没有成功。任何帮助都将受到高度赞赏。
修改 我想要执行toast以及我尝试返回this.http.post ...它返回一个订阅对象。如何从中获取json数据?
**编辑#2 ** 我使用定义上的map成功返回数据,并在呼叫端订阅。
return this.http.post(this.url+URL, body, options)
.map((data) => {
let json=JSON.parse(data['_body']);
let toast=this.toast.create({
message:json.response,
duration:3000,
position:'top'
});
toast.present();
return json;
}
并使用
进行调用this.request.sendRequest(requestBody,'api/login').subscribe((data)=>{
console.log(data);
});
吐司也有效。
解决
答案 0 :(得分:0)
如果您的目标是追加标题并显示toatser,请考虑使用新interceptor中的Http Client module:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json' );
let options = new RequestOptions({ headers: headers });
const clone = req.clone({ setHeaders: headers });
return next
.handle(clone || req)
.map(response => {
this.toast.create(...);
return response;
});
}