2017-06-06 14 views
0

typescriptサービスコンポーネントのhttp.postコールからの応答をangle2コンポーネントに渡して、フロントエンドに表示できるようにしようとしています。以下は私のservice.tsとcomponent.tsのコード構造です。http.postからangular2の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(); 
     } 
    ); 
    } 

私の質問は、コントローラのデータがgetSearchProfileResponse(body)メソッドの応答で渡されているのがわかりました。しかし、応答はgetProfile()メソッドの応答に "未定義"として表示されています。どんな入力も感謝しています!

答えて

1

.map()の機能をreturnに設定しています。

はコードの下に試してみてください。

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); 
     }); 
    } 
+0

ありがとうございました!それはうまくいった。 –

関連する問題