2017-02-17 2 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); 
    } 

eingeben .............................. .................................................. .......................Typ 'beobachtbar <void>' ist nicht übertragbar 'beobachtbar <JSON>'

Fehler

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

Was in meinem Code falsch?

+1

Wenn es Kompilierzeit Fehler ist, dann überprüfen Sie Ihre Rückgabetyp 'extractData' Funktion. Es muss ein JSON-Objekt zurückgeben. Und wenn es Laufzeitfehler ist, dann überprüfen Sie, ob Ihre 'extractData' etwas zurückgibt oder nicht. –

+0

seine complie Zeit Fehler – Pravin

+1

Bitte fügen Sie den Code Ihrer 'handleError' Funktion – yurzui

Antwort

1

.map() Bedürfnisse etwas, zum Beispiel zurückzukehren:

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

Die return response.json() Ausbeuten Observable<JSON>. Ohne etwas von .map() zurückzusenden, wird es Observable<void>.

Verwandte Themen