使用http调用和句柄响应在Angular 4中创建方法

使用http调用和句柄响应在Angular 4中创建方法,angular,es6-promise,Angular,Es6 Promise,我有一个具有请求函数的提供者类。它工作得很好: sendRequest(requestBody:any,URL:string){ let headers = new Headers(); headers.append("Accept", 'application/json'); headers.append('Content-Type', 'application/json' ); let options = new RequestOptions({ header

我有一个具有请求函数的提供者类。它工作得很好:

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。http.post。。。它正在返回一个订阅对象。如何从中获取json数据

**编辑#2** 我在定义上使用map,在调用端使用subscribe,成功地返回了数据

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);
    });
吐司也有用


<强>解决< /强>

如果您的目标是追加头文件并显示一个TATASER,请考虑使用新的:< /P>中的一个
intercept(req:HttpRequest,next:HttpHandler):可观察{
let headers=新的headers();
append(“Accept”,“application/json”);
headers.append('Content-Type','application/json');
let options=newrequestoptions({headers:headers});
const clone=req.clone({setHeaders:headers});
下一个返回
.handle(克隆| |请求)
.map(响应=>{
这个.toast.create(…);
返回响应;
});
}

您必须返回它:
返回this.http.post…
然后您可以从另一个方法调用它检查此线程是否可能重复