2016-04-29 19 views
3

私は角度2.0.0-beta.16を使用しており、RESTful APIからデータを取得しようとしています。私は次のサービスを持っています:Angular2 Http/Jsonpリクエストを作成しない

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); 
    } 
} 

私のコンポーネントから、私はgetStores()を呼び出しています。私はconsole.logメッセージを受け取っているので、getStores()機能に入っていることを知っています。しかし、何も起こりません。 chrome開発ツールで見ることのできる要求はありません。コンソールにログに記録されるエラーはありません。ただ何も。私はJsonpHttpの両方を試しましたが、両方とも同じ結果が得られます。

答えて

5

あなたはgetStores()によって返されたオブザーバブルを購読する必要があります。オブザーバブルは怠け者で、何もしないでください。subscribe()または `toPromise()

+0

それでした。ありがとう。このナゲットのドキュメントにリンクしてもよろしいですか? – Gregg

+0

私はこの興味深い[https://gist.github.com/staltz/868e7e9bc2a7b8c1f754]を見つけました – Picci

+0

http://blog.thoughtram.io/angular/2016/01/06/taking-advantage-of-observables-in-angular2 .htmlリンクが壊れているようです。 –

関連する問題