我正试图浏览一个内容。我尝试了一些在StackOverflow中找到的答案,但是没有一个对我有用。
我有这个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"
}
}我试着用下面的代码循环
<button ion-item *ngFor="let cat of subcategories" (click)="onSubcategorySelect(cat)">
{{ cat.name }}
</button>这不管用。我做错了什么?
发布于 2017-10-16 18:18:33
角的ng-for需要任何具有Iterable接口的元素才能工作,而普通对象则不是这种情况。您需要在数组中“转换”此对象,更简单的方法是使用forEach或for/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。
希望这能有所帮助。
https://stackoverflow.com/questions/46773429
复制相似问题