2017-11-01 8 views
1

私はAngularJS/Ionic 2を使用してAPIデータを取得しています。私はthisガイドをフォローし、home.htmlに行くときにデータを適切に記録するようにしました。しかし、実際にhome.htmlにデータを表示しようとすると、動作させることができません。JSONデータをIonic 2/AngluarJSで表示しますか?

データ-provider.ts:

getRemoteData(){ 

this.http.get('https://api.example.com/?limit=10').map(res => res.json()).subscribe(data => { 
    console.log(data); 
}); 

}

home.ts:私が試した

[ 
    { 
     "id": "a", 
     "name": "ExampleA", 
     "price": "10" 
    }, 
    { 
     "id": "b", 
     "name": "ExampleB", 
     "price": "15" 
    } 
] 

ionViewDidLoad(){ 
    this.dataService.getRemoteData(); 
    } 

は、これは正しくJSONデータを記録しますdaを記録する代わりにデータを返すTA、その後、Can't read property '0' of undefined

答えて

3

2点をhome.ts内の変数data: any;を作成し、<p> data[0].name </p>としてhome.htmlにデータを出力するが、私はエラーメッセージを取得保管:あなたはへの要求から値を代入するか持っていますコンポーネントのプロパティとテンプレート内のこのプロパティが割り当てられるのを待ちます。

あなたのサービス/プロバイダが(のみ)でなければなりません:

getRemoteData(){ 

    return this.http.get('https://api.example.com/?limit=10') 
    .map(res => res.json()); 
} 

あなたがそれで、観察に加入するべきではありません。前に述べたように、テンプレート内

ionViewDidLoad(){ 
    this.dataService.getRemoteData().subcribe(response => this.data = response); 
} 

「データ」は存在するかどうかを確認:コンポーネントでこれを行う

<p *ngIf="data">data[0].name </p> 
+0

は、メソッド定義の戻り値の型を追加する必要があります。 getRemoteData():Observable {}は答えを完了します:) –

+0

@PrithiviRajはリマインダーに感謝します!私はあなたのヒントで投稿を編集しました:-) –

+0

@ChristianBenseler '.getRemoteData()'の値を割り当てる方法と場所を完全にフォローしていません。あなたが提供したコードを使用し、 'data:any;'をhome.tsに追加しました。 'export class HomePage {data:any;コンストラクタ(private dataService:DataProvider){} ionViewDidLoad(){this.dataService.getRemoteData()。subscribe(レスポンス=> this.data =レスポンス); } '私はまだ' '未定義のプロパティ '0'を読むことができません。 ' –

関連する問題