Angular 2 http获取对象数组

时间:2016-12-17 13:53:48

标签: angular http get ionic2

我目前正在练习Angular2和Ionic2。我想从API检索数据(例如:https://www.cryptocompare.com/api/data/coinlist/)。要检索数据,我使用加载方法创建了一个提供程序:

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

为了显示数据我已经制作了以下模板结构:

<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>

这里我使用Pipe,因为响应是Objects。但是,我似乎无法使其发挥作用。 Console.log向我显示响应仍然是带有对象的对象,我猜测问题就在那里。 (console.log还在控制台中显示两次?)

控制台: Console.log of this.currencies

参考Pipe类:

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

视图显示一个空列表,控制台中没有输出错误。有谁知道如何解决这个问题?非常感谢

1 个答案:

答案 0 :(得分:0)

我可能错了,但它适用于AngularJS 1.x。

而不是使用对象将它们更改为数组:

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