2016-04-29 9 views
3

Ich verwende Angular 2.0.0-beta.16 und versuche, Daten von meiner RESTful API zu erhalten. Ich habe den folgenden Service:Angular2 Http/Jsonp Anfrage nicht möglich

import {Injectable}  from 'angular2/core'; 
import {Jsonp, Response, Headers, RequestOptions} from 'angular2/http'; 
import {Store}   from './store'; 
import {Observable}  from 'rxjs/Observable'; 
import 'rxjs/Rx'; 

@Injectable() 
export class StoreService { 
    constructor(private jsonp: Jsonp) { 

    } 

    getStores(): Observable<Store[]> { 
     console.log("getting stores"); 
     // let headers = new Headers({ 'Content-Type': 'application/json' }); 
     // let options = new RequestOptions({ headers: headers }); 
     return this.jsonp.get("http://localhost:8080/stores") 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 

    private extractData(res: Response) { 
     console.log(res.status); 
     if (res.status < 200 || res.status >= 300) { 
      throw new Error('Bad response status: ' + res.status); 
     } 
     let body = res.json(); 
     return body.data || {}; 
    } 


    private handleError(error: any) { 
     // In a real world app, we might send the error to remote logging infrastructure 
     let errMsg = error.message || 'Server error'; 
     console.error(errMsg); // log to console instead 
     return Observable.throw(errMsg); 
    } 
} 

Aus meiner Komponente, ich rufe getStores(). Ich weiß, dass es in die getStores() Funktion kommt, weil ich die console.log Nachricht bekomme. Es passiert jedoch nichts anderes. Es wird keine Anfrage gestellt, die ich in den Chrome-Dev-Tools sehen kann. Es wurden keine Fehler in der Konsole protokolliert. Gar nichts. Ich habe sowohl Jsonp und Http ausprobiert, aber beide geben die gleichen Ergebnisse.

Antwort

5

Sie müssen die Observable von getStores() zurückgegeben abonnieren. Observables sind faul und tun nichts ohne subscribe() oder `toPromise()

getStores().subscribe(val => { console.log(val); }; 
+0

Das war es! Vielen Dank. Würde es Ihnen etwas ausmachen, mit einigen Dokumenten zu diesem bestimmten Nugget zu verlinken? – Gregg

+0

Ich fand das interessant [https://gist.github.com/staltz/868e7e9bc2a7b8c1f754] – Picci

+0

http://blog.thoughtram.io/angular/2016/01/06/taking-advantage-of-observables-in-angular2 .html Ihr Link scheint kaputt zu sein. –