2017-10-16 57 views
0

我试图遍历内容。我尝试了一些在StackOverflow中找到的答案,但没有一个适合我。循环播放对象Ionic3/Angular4

我有这样的JSON

{ 
    "-KmdNgomUUnfV8fkzne_":{ 
     "name":"Abastecimento" 
    }, 
    "-KmdNgzguGKbCEfyQ3F0":{ 
     "name":"Consórcios" 
    }, 
    "-KmdNh9_jtBlFqY1Y_Rj":{ 
     "name":"Consultoria aeronáutica" 
    }, 
    "-KmdNhKNCVEiJ2Ou8bUV":{ 
     "name":"Cursos e treinamentos" 
    }, 
    "-KmdNhVRoKfaCM--304M":{ 
     "name":"Financiamento" 
    }, 
    "-KmdNhfIC6fA0kDJcVBq":{ 
     "name":"Hangaragem" 
    }, 
    "-KmdNhu0X-PteQMyHp_n":{ 
     "name":"Mecânica" 
    }, 
    "-KmdNi6ZmmYXnoOTXoC5":{ 
     "name":"Táxi Aéreo" 
    }, 
    "-KmdNiHFhiX_crXB1L2R":{ 
     "name":"Outros" 
    } 
} 

I'm使用此代码

<button ion-item *ngFor="let cat of subcategories" (click)="onSubcategorySelect(cat)"> 
       {{ cat.name }} 
</button> 

它不工作试图循环。我究竟做错了什么?

+0

看看这个 - https://stackoverflow.com/questions/41396435/how-to-iterate-object-object-using-ngfor-in-angular-2 –

回答

2

角的ng-for需要的任何元素与Iterable接口工作,它不是一个普通的物体的情况下。你需要在一个数组“转换”这个对象中,更简单的方法是用forEachfor/in循环:

任何地方在你的代码,你会通过你的对象迭代,并把它保存在一个新的变量在ngFor使用:

public newSubcategories: any[] = []; // DECLARE A NEW EMPTY ARRAY IN THE TOP OF YOUR CLASS 

this.subcategories.forEach(item => { 
    this.newSubcategories.push(a); 
}); 

如果需要十个分量密钥使用for/in推一个新的对象与关键。

public newSubcategories: any[] = []; // DECLARE A NEW EMPTY ARRAY IN THE TOP OF YOUR CLASS 

for(let key in this.subcategories){ 
    this.newSubcategories.push({ 
    key: key, 
    name: this.subcategories[key].name 
    }); 
} 

最后你的HTML

<button ion-item *ngFor="let cat of newSubcategories" (click)="onSubcategorySelect(cat)"> 
    {{ cat.name }} 
</button> 

有了这个,你就可以在你的新阵列中使用的ng-for

希望这会有所帮助。