首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历对象Ionic3/Angular4 4

遍历对象Ionic3/Angular4 4
EN

Stack Overflow用户
提问于 2017-10-16 15:06:39
回答 1查看 2K关注 0票数 2

我正试图浏览一个内容。我尝试了一些在StackOverflow中找到的答案,但是没有一个对我有用。

我有这个JSON

代码语言:javascript
复制
{  
   "-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"
   }
}

我试着用下面的代码循环

代码语言:javascript
复制
<button ion-item *ngFor="let cat of subcategories" (click)="onSubcategorySelect(cat)">
              {{ cat.name }} 
</button>

这不管用。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 18:18:33

角的ng-for需要任何具有Iterable接口的元素才能工作,而普通对象则不是这种情况。您需要在数组中“转换”此对象,更简单的方法是使用forEachfor/in循环:

在代码中的任何地方,您都将遍历对象并将其保存在一个新变量中,以便在ngFor中使用。

代码语言:javascript
复制
public newSubcategories: any[] = []; // DECLARE A NEW EMPTY ARRAY IN THE TOP OF YOUR CLASS

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

如果您需要对键进行处理,请使用for/in来用键推送一个新的对象。

代码语言:javascript
复制
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

代码语言:javascript
复制
<button ion-item *ngFor="let cat of newSubcategories" (click)="onSubcategorySelect(cat)">
  {{ cat.name }} 
</button>

有了这个,您就可以在新数组中使用ng-for

希望这能有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46773429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档