2017-02-17 70 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>

相關問題