2016-12-17 17 views
0

私は現在Angular2とIonic2で練習中です。 APIからデータを取得したいとします(例:https://www.cryptocompare.com/api/data/coinlist/)。ここでは角2 httpオブジェクトの配列を取得

<ion-row *ngFor="let currency of currencies | orderBy : ['-Name'] | keys" (click)="itemTapped($event, currency)"> 
    <ion-col width-10> 
    1 
    </ion-col> 
    <ion-col width-60> 
    {{currency.Name}} 
    </ion-col> 
    <ion-col width-30> 
    {{currency.FullName}} 
    </ion-col> 
    </ion-row> 
    <ion-row> 

私はパイプを使用します。

load() { 
if (this.currencies) { 
    // already loaded data 
    console.log('already has data'); 
    return Promise.resolve(this.currencies); 
} 

var url = this.baseUrl + '/coinlist'; 

// don't have the data yet 
return new Promise(resolve => { 
    this.http.get(url) 
    .map(res => res.json().Data) 
    .subscribe(data => { 
     this.currencies = data; 
     resolve(this.currencies); 
     console.log(this.currencies); 
    }); 
}); 
} 

と私は、次のテンプレート構造を作ったデータを表示する:私はloadメソッドを使用してプロバイダを作ったデータを取得するには応答はオブジェクトです。しかし、私はそれを動作させるように思えない。 Console.logは、レスポンスがまだオブジェクトのオブジェクトであることを私に示しています。問題がそこにあると推測しています。 (にconsole.logはまた、コンソールに二回示されている?)

コンソール: Console.log of this.currencies

基準配管クラス:

@Pipe({name: 'keys'}) 
export class KeysPipe implements PipeTransform { 
    transform(value, args:string[]) : any { 
    if (!value) { 
     return value; 
    } 
    let keys = []; 
    for (let key in value) { 
     keys.push({key: key, value: value[key]}); 
    } 
    return keys; 
    } 
} 

ビューが空のリストを表示し、出力エラーがありませんコンソールで誰もこれを解決する方法を知っていますか?多くのありがとう

+0

あなたの応答は、最初のオブジェクトの配列ではありませんので、これを確認し、テンプレートによれば、オブジェクトの配列でなければなりません。 –

+0

こんにちはAvnesh、ありがとうございました。私がパイプを削除すると、次のようなエラーが表示されます: "オブジェクト 'オブジェクト'の[オブジェクトオブジェクト] 'をサポートしていないオブジェクトを見つけることができません。これは私にオブジェクトであることを示しました。あなたはもっと自分自身を説明することができますか? – Thjeu

+0

あなたの**ビュー**によると、すでに言っているように、 '[{" Name ":" xyz "、" FullName ":" xyz "、...}、...]'ディレクティブ '* ngFor'は、テンプレートを表示する際に反復することができます。チェックアウト**角度の文書**もしあなたが明確にする必要があれば。 –

答えて

0

私は間違っているかもしれませんが、AngularJS 1.xで動作しました。

を使用してオブジェクトの配列にそれらを変更するのではなく:

$http.get('/*request*/').success(function(data){ 
angular.forEach(data, function(value, key){ 
    users.push(value); 
}); 
/*your code*/ 
}); 
関連する問題