我似乎无法弄清楚我做错了什么。我在类型的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>
我不明白为什么我没有回到阵列。
答案 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;
}