You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic 3中如何用*ngFor获取解析后数组的全部内容?

解决方案:遍历分类下的全部产品

我来帮你搞定这个问题!你当前只能看到每个分类下的第一个产品,核心原因是模板里直接通过menu.products[0]硬取了数组的第一个元素,没有遍历整个menu.products数组。只需要在现有结构里再加一层*ngFor,就能展示分类下的所有产品了。

修改后的product.html代码

<ion-item-group *ngFor="let menu of products; let i = index">
  <!-- 可选:添加分类标题分隔栏,让界面结构更清晰 -->
  <ion-item-divider>
    <h3>{{menu.name}}</h3>
  </ion-item-divider>

  <!-- 遍历当前分类下的所有产品 -->
  <ion-item class="item-frame" *ngFor="let product of menu.products" (click)="view(product.id)" tappable>
    <div class="item-image" [style.background-image]="'url(' + product.image_path + ')'">
      <ion-row class="item-bar" align-items-center>
        <ion-col col-2 *ngIf="menu.type !== 'fb'">
          <ion-icon name="custom-hat"></ion-icon>
        </ion-col>
        <ion-col col-2 *ngIf="menu.type === 'fb'">
          <ion-icon name="custom-facebook"></ion-icon>
        </ion-col>
        <ion-col col>
          <h2>{{product.name}}</h2>
          <!-- 取消注释即可显示产品简介 -->
          <!-- <p>{{product.resume}}</p> -->
          <p>{{product.id}}</p>
        </ion-col>
      </ion-row>
    </div>
  </ion-item>
</ion-item-group>

关键改动说明

  1. 新增产品遍历层:在原有的分类遍历(*ngFor="let menu of products")内部,给<ion-item>添加了*ngFor="let product of menu.products",这样每个分类下的所有产品都会被循环渲染。
  2. 替换产品引用:把所有menu.products[0].xxx的写法改成product.xxx,因为现在product就是当前循环的单个产品对象。
  3. 可选优化:添加了<ion-item-divider>来显示分类名称,让界面层级更明确,如果不需要可以直接删除这部分代码。

关于TypeScript代码的说明

你的parseCategories函数已经正确把每个分类对应的产品数组赋值给了menu.products,所以TypeScript部分不需要做任何修改,保持当前代码即可。

内容的提问来源于stack exchange,提问作者Daniel Morais

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:02:43