2016-10-05 2 views
0

Ich versuche, eine http GET-Methode in einem Dienst aufzurufen, mein Problem ist, dass ich die Antwort nicht richtig speichern kann.Angular 2 HTTP GET mit TypeScript: Variable leer nach dem Abonnieren

in meinem app.component.ts:

marker: any; 
... 
this.formService.getMarker() 
    .subscribe((marker: Marker[]) => { 
    this.marker = marker; 
    console.log(this.marker); //i get output from db 
}); 
console.log(this.marker); // i get undefined 

in meinem app.service.ts:

getMarker(){ 
return this.http.get('http://localhost:3002/marker') 
    .map(res => res.text()); 
} 

Wie kann ich die Antwort von dem API-Aufruf speichern richtig, so dass ich verwenden können, es in der Komponente?

+0

Änderung getMarker(), wie unten getMarker() { return this.http.get ('http: // localhost: 3002/Marker') .map (res => res.json()) ; } –

+0

meine Variable 'marker' ist immer noch nicht definiert nach dem Abonnement –

+0

Überprüfen Sie zuerst die Antwort von/marker von console.log –

Antwort

0
@Component({...}) 
    class MarkerComponent(){ 

     marker: any; 

     getDataFromServer(){ 
      let _self = this; 
      this.formService.getMarker() 
      .subscribe((marker: Marker[]) => { 
         _self.marker = marker; 
         _self.cotherFunction(); // this run after the response 
       }); 
       this.otherFunction() // this run after request 
     } 

     otherFunction(){ 
      console.log(this.marker); 
     } 
    }