2017-02-17 17 views
0
getStepList(): Observable<JSON> {     
      this.headers = new Headers(); 
      this.headers.append('Content-Type', 'application/json; charset=utf-8');     
      let options = new RequestOptions({ 
       method: RequestMethod.Post, 
       url: "FeedbackMaster.aspx/getStepList",     
       headers: this.headers, 
        body:{log:this.login} 
      }); 
      return this._http.request(new Request(options)).retry(2) 
      .map((response: Response)=>this.extractData(response)) 
      .do(data => {this.temp=data, console.log('getStepList:'+ JSON.stringify(JSON.parse(this.temp.d)))}) 
      .catch(this.handleError);     
    } 

    extractData(res: Response) { 
      let body = res.json(); 
      return body || { }; //<--- not wrapped with data 
    } 
      handleError(error: any) { 
     console.error('An error occurred', error); 
      return Promise.reject(error.message || error); 
    } 

を型に代入ない.............................. ..................................................私のコードで間違って何.......................タイプ '観察可能<void>' は '観察可能<JSON>'

エラー

[ts] 
Type 'Observable<void>' is not assignable to type 'Observable<JSON>'. 
Type 'void' is not assignable to type 'JSON'. 

+1

コンパイル時にエラーが発生した場合は、 'extractData'関数の戻り値の型をチェックしてください。 JSONオブジェクトを返す必要があります。 実行時エラーの場合は、 'extractData'が何かを返すかどうかを確認してください。 –

+0

対応時間エラー – Pravin

+1

'handleError'関数のコードを追加してください – yurzui

答えて

1

.map()ニーズたとえば、何かを返すために:

.map((response: Response) => { this.extractData(response); return response.json(); }) 

return response.json()利回りObservable<JSON>.map()から何も返さないとObservable<void>になります。

関連する問題