【问题标题】:Ionic Error: Error trying to diff '[object Object]'离子错误:尝试区分“[object Object]”时出错
【发布时间】:2017-12-21 07:00:40
【问题描述】:

我似乎无法弄清楚我做错了什么。我正在对类型化的 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>

我不明白为什么我没有返回一个数组。

【问题讨论】:

  • 你似乎在这里缺少}{{market}..虽然不确定它是否相关
  • 好收获。修复了它,但是仍然是同样的问题
  • 你想在 中显示什么?
  • 现在我不在乎只希望它正确读取数组。我试过没有它,但同样的问题
  • 您是否在控制台登录data 并验证它是否是一个数组?

标签: angular ionic2


【解决方案1】:

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

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

【讨论】:

  • 这些修复了错误。但是页面上什么也没有出现(
  • 因为你的数据格式不是一个数组...... Ngfor 应该只接受数据格式的数组......你应该检查你的数据......
【解决方案2】:

所以基本上我的返回对象不是一个真正的数组。即使 Typescript 返回 Market[] array 。结果是 Market 的一个对象。诀窍是。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 2018-07-25
    • 2021-01-04
    • 2017-11-18
    • 2018-10-11
    • 2019-08-08
    • 2021-09-13
    相关资源
    最近更新 更多