将响应从http.post传递到angular2中的component.ts

将响应从http.post传递到angular2中的component.ts,angular,typescript,Angular,Typescript,我试图将typescript服务组件中http.post调用的响应传递给angular2组件,以便在前端显示它们。下面是我的service.ts和component.ts代码结构 getSearchProfileResponse(body) { let headers = new Headers({'Content-Type': 'application/json'}); let options = new RequestOptions({headers: headers});

我试图将typescript服务组件中http.post调用的响应传递给angular2组件,以便在前端显示它们。下面是我的service.ts和component.ts代码结构

getSearchProfileResponse(body) {
    let headers = new Headers({'Content-Type': 'application/json'});
    let options = new RequestOptions({headers: headers});
    return this.http.post(this._url, body, options)
      .map((response:Response) => {
        console.log(JSON.stringify(response));
        JSON.stringify(response);
      })
      .catch((error) => {
        console.log("error is "+ error);
        return Observable.throw(error);
      });
  }

getProfile() {
    this.spinnerService.show();
    this.searchProfileRequest = _.cloneDeep(this.searchKey);
    this.searchProfileService.getSearchProfileResponse(this.searchProfileRequest)
      .subscribe(
        searchProfileResponse => {
          this.searchResult = searchProfileResponse;
          console.log("response in component is "+ searchProfileResponse);  // this is displayed as undefined
          console.log("search result is "+ this.searchResult);
          this.spinnerService.hide();
          this.showProfiles(this.searchResult);
        },
        error => {
          console.log(error);
          this.spinnerService.hide();
          this.showError();
        }
      );
  }
我的问题是,我可以在getSearchProfileResponsebody方法的响应中看到来自控制器的数据。但是在getProfile方法的响应中,响应显示为未定义。感谢您的任何意见

您错过了从.map函数返回的功能

请尝试以下代码:

getSearchProfileResponse(body) {
    let headers = new Headers({'Content-Type': 'application/json'});
    let options = new RequestOptions({headers: headers});
    return this.http.post(this._url, body, options)
      .map((response:Response) => {
        console.log(JSON.stringify(response));
        return JSON.stringify(response);
      })
      .catch((error) => {
        console.log("error is "+ error);
        return Observable.throw(error);
      });
  }