2016-08-08 53 views
4

私のangular2アプリケーションでは、URLにgetリクエストを送信するサービスがあります。ここで宣言された型が 'void'でも 'any'でもない関数は、値を返す必要があります

は私のサービスです。

import {Http} from '@angular/http'; 
    import {Observable} from 'rxjs/Observable'; 
    import 'rxjs/add/operator/map'; 
    import {Injectable} from '@angular/core'; 
    import {Gallery} from './gallery'; 

    @Injectable() 
    export class InstagramService{ 

     constructor(private _http:Http){ 

     } 

     getGallery(username: string) : Observable<Gallery> { 
      var result=this._http.get("https://www.instagram.com/"+username+"/media/").map(res => res.json()); 
console.log(result); 
     return result; 
     } 

    } 

私はObservable<Gallery>として戻り値の型を定義しているが、それはと文句を言い:

A function whose declared type is neither 'void' nor 'any' must return a value 

このコードで間違って起こっていますか?

答えて

4

戻り値の型を宣言した場合、何も返さないのはなぜですか?

この場合、通常これが必要です。

getGallery(username: string) : Observable<Gallery> { 
    return this._http.get("https://www.instagram.com/"+username+"/media/").map(res => res.json()); 
} 

var resultおそらく_http.get(...)Observableない値を返すので、あなたがとにかく期待しません。

getGallery()の呼び出し元は、値が到着したときに通知を受け取るためにサブスクライブすることができます。

instagramService.getGallery.subscribe((result) => this.galleryData = result); 

値が到着すると、その後(result) => this.galleryData = resultが呼び出されるとresultがあなたの現在のコンポーネントやサービスのgalleryDataに割り当てられています。

関連する問題