2017-05-28 3 views
0

Ich habe ein Problem mit meinem Angular2-Dienst. Meine Funktion Call to Rest Server, als nächstes möchte ich die Ausgabe drucken, aber console.log zeigt undefined.Angular2 rxjs Aufruf zur Ruhe api und bekomme undefinierte Ausgabe

Hauptklasse

export class EventListComponent implements OnInit { 
    events: Event[]; 

    constructor(
    private eventService: EventService 
) {} 

    loadPosts() { 
    console.log('loading'); 
    this.eventService.getEvents() 
     .subscribe(
     events => this.events = events, 
     err => { 
      console.log(err); 
     }); 
    console.log(this.events); // undefined 
    } 

    ngOnInit() { 
    // Load comments 
    this.loadPosts(); 
    } 
} 

und Event

@Injectable() 
export class EventService { 

    private eventsUrl = 'http://localhost:5000/search'; 

    constructor(private http: Http) {} 

    getEvents(): Observable<Event[]> { 

    return this.http.get(this.eventsUrl) 
     .map((res: Response) => res.json()) 
     .catch((error: any) => Observable.throw(error.json().error || 'Server error')); 
    } 

} 

Was ist falsch?

+2

Mögliches Duplikat [? Wie kann ich die Antwort von einem beobachtbaren/http/Asynchron-Aufruf in angular2 zurückkehren] (https://stackoverflow.com/questions/43055706/how-do-i-return -die-Antwort-von-einem beobachtbaren-http-async-call-in-angular2) – echonax

Antwort

0

Sie loggen this.events, bevor es eingestellt ist. Do:

loadPosts() { 

    this.eventService.getEvents() 
     .catch(err => console.log(err)) 
     .subscribe(
     events => { 
      this.events = events; 
      console.log(this.events); 
     }); 
    }