2016-11-22 10 views
1

Ich habe die gleiche Herausforderung wie Gesichter in der SO Post here Ich bin undefined in der subscribe-Methode in meinem component.ts, obwohl in meinem Dienst habe ich die Daten. Codes unter p.component.tsAngular 2 Observable-Subscribe zeigt undefined

private getPayItems():void{ 
    console.log('In getPayItems'); 
    this._payItemService.getPayItems() 
    .subscribe(data => { 
     this.payItemArray = data; 
     console.log(data); 
    }, 
    (error:any) =>{ 
     this.alerts.push({ msg: error, type: 'danger', closable: true }); 
    }) 
} 

p.service.ts Siehe

getPayItems():Observable<Payitem[]>{ 

    let actionUrl = this.url + "/GetPayItem"; 

    return this._http.get(actionUrl, { headers: this.headers }) 
     .map((response: Response) => { 
      <Payitem[]>response.json() ; 
      console.log(<Payitem[]>response.json()); //This logs the Object 
     }) 
     .catch(this.handleError); 
} 

Antwort

5

Wie Sie {} verwendet es von function explizite Rückkehr muss. Also müssen Sie <Payitem[]>response.json() von map Funktion zurückgeben.

getPayItems():Observable<Payitem[]>{ 

    let actionUrl = this.url + "/GetPayItem"; 

    return this._http.get(actionUrl, { headers: this.headers }) 
     .map((response: Response) => { 
      console.log(<Payitem[]>response.json()); //This logs the Object 
      return <Payitem[]>response.json() ; 
     }) 
     .catch(this.handleError); 
} 

Ansonsten unten würde Stenografie Syntax sein

getPayItems():Observable<Payitem[]>{ 
    let actionUrl = `${this.url}/GetPayItem`; 
    return this._http.get(actionUrl, { headers: this.headers }) 
     .map((response: Response) => <Payitem[]>response.json()) 
     .catch(this.handleError); 
} 
+0

Sie speicherten nur mein Tag, Sir! Vielen Dank –

Verwandte Themen