2016-11-25 11 views
1

Angular 2でデータを取得し、javascriptでデータを取得する方法が不思議です。ヒーローのチュートリアルを見てきましたが、これまで私が思いついたのはここです。Angular 2 httpはAsp.net Core MVCを使用して取得します

  1. 私は記事

    GetArticles(subverse : string) : Observable<Article[]> 
    { 
        console.log("GetArticles URL: " + this._getArticlesUrl + "/?subverse="+subverse); 
    
        return this.http.get(this._getArticlesUrl + "/?subverse="+subverse) 
          .map(this.extractData) 
          .catch(this.handleError); 
    } 
    
    private extractData(res: Response) 
    { 
        let body = res.json(); 
        return body.data || { }; 
    } 
    
    private handleError (error: Response | any) 
    { 
        // In a real world app, we might use a remote logging infrastructure 
        let errMsg: string; 
        if (error instanceof Response) { 
        const body = error.json() || ''; 
        const err = body.error || JSON.stringify(body); 
        errMsg = `${error.status} - ${error.statusText || ''} ${err}`; 
        } else { 
        errMsg = error.message ? error.message : error.toString(); 
        } 
        console.error(errMsg); 
        return Observable.throw(errMsg); 
    } 
    

を取得するために、サービス内の関数を作成したコンストラクタ

  • のHTTP VARとサービスを作成しましたが、私は「ドン観察可能なものが何であり、なぜ私はここでそれを使用しなければならないのか理解していますか?

    さて、このコードは実際に私のURLを呼び出し、URLが実際に

    JSON

    として記事データを返すURLの応答:

    [{"id":1,"userID":"00d85571-e2d3-4817-8698-6aa1b184112b","title":"title","link":"http://google.com","text":"text","subverse":"home","votes":0,"isanon":false}] 
    

    ここに私の記事のクラスです:

    export class Article { 
        id : number; 
        isanon : boolean; 
        title: string; 
        link: string; 
        text: string; 
        subverse : string; 
        userID : string; 
        votes: number; 
    } 
    

    マイ質問は、どのように私の記事では、このURLの応答を取得する[]私のJavaScriptでですか?私は

    articlesO : Observable<Article[]>; 
        articles : Article[]; 
    
        this.articlesO = this.service.GetArticles(this.subverseStr); 
    
        this.articlesO.forEach(a => this.articles = a); 
    

    を試してみましたが、コードの私のthis.articles滞在undefinedてきました。 URL jsonを読んで、Articles[]にするにはどうすればいいですか?

    助けてください。

    ありがとうございました。

  • 答えて

    1

    観測可能なものは約束のようですが、ストリーム版のようです。

    Angular - Promise vs Observable

    そして、あなたの問題のために、あなたは それを発射するために、観測可能にを購読する必要があります:あなたは、ここで観測対約束に関する詳細な情報を見つけることができます。このよう

    :クロムのネットワークタブであなたにサーバの復帰を何

    this.service.GetArticles(this.subverseStr).subscribe((data)=>{ 
        console.log(data); 
        //do something with the returned data. 
        this.articles = data; 
    }); 
    
    +1

    @ClaySmith? – echonax

    +0

    jsonコードからbody.dataを削除して動作させました。サーバーは元の投稿にURL応答を返します。私はそれが働いていると思う!迅速な対応をしていただきありがとうございます。 :) –

    +1

    @ClaySmithああ問題はない、うれしいあなたがそれを理解:) – echonax

    関連する問題