离子错误:尝试差异[对象对象]'

时间:2017-12-21 07:00:41

标签: angular ionic2

我似乎无法弄清楚我做错了什么。我在类型的Market []变量上尝试* ngFor,但由于某种原因它无法正确读取数组。 Ionic抱怨市场不是一个数组,但从我的实现来看,它似乎是。帮助

市场定价:

 export interface Market {
    id: string;
    symbol: string;
    base: string;
    quote: string;
    info: any;
    lot: number;
}

我的服务电话

  getMarketData(): Observable<Market[]> {
    let bittrex = new ccxt.poloniex();
    return Observable.fromPromise(bittrex.loadMarkets());
  }

我的页面设置数据

    markets: Market[] = [];
    async loadMarkets() {
      this.cryptoService.getMarketData().subscribe((data: Market[]) => {
      this.markets = data;
    })
  }

我的模板

<ion-list #scheduleList [hidden]="markets.length < 0">

<ion-item-group *ngFor="let market of markets">

  <ion-item-divider sticky>
    <ion-label>
      {{market}}
    </ion-label>
  </ion-item-divider>
</ion-item-group>

我不明白为什么我没有回到阵列。

error

2 个答案:

答案 0 :(得分:1)

所以基本上我的返回对象不是真正的数组。尽管Typescript正在返回Market []数组。结果是市场的一个对象。诀窍是。

   getMarketData(): Observable<Market[]> {
    let bittrex = new ccxt.poloniex();
    return Observable.fromPromise(bittrex.loadMarkets()).map(data => 
    Object.keys(data).map(k => data[k]))
}

答案 1 :(得分:0)

*ngIf之前检查*ngFor 试试这个

<div *ngIf="markets">
<ion-item-group *ngFor="let market of markets">

  <ion-item-divider sticky>
    <ion-label>
      {{market}}
    </ion-label>
  </ion-item-divider>
</ion-item-group>
</div>

并检查您的回复data实例是array | correct type

this.markets=[]
if (data instanceof Array) {
      this.markets = data;
  }