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

Angular嵌套ngFor在内层使用外层索引实现每行3列动态布局

实现方案

方案1:TS层预处理数组(推荐)

先在组件逻辑层把一维数组拆分为每3个元素一组的二维数组,模板直接遍历即可,逻辑清晰性能更好。
component.ts 代码:

l = ["one", "two", "three", "four", "five", "six", "seven"];
groupedList: string[][] = [];

ngOnInit() {
  // 按3个元素一组拆分原数组
  for (let i = 0; i < this.l.length; i += 3) {
    this.groupedList.push(this.l.slice(i, i + 3));
  }
}

模板代码:

<div class="row" *ngFor="let row of groupedList">
  <div class="col" *ngFor="let item of row">
    <p>{{item}}</p>
  </div>
</div>

方案2:模板直接实现(无需修改TS代码)

使用Angular内置的slice管道切割数组,适配你现有代码框架即可:

<div *ngFor="let content of l; index as i">
  <div class="row" *ngIf="i % 3 === 0">
    <div class="col" *ngFor="let item of l | slice:i : i+3">
      <p>{{item}}</p>
    </div>
  </div>
</div>

slice管道参数为[起始索引, 结束索引),刚好匹配你需要的i到i+3的遍历区间,无需手动维护内层循环的索引值。

两种方案最终渲染出来的HTML结构都和你要求的完全一致,数组长度不足3的最后一行会自动适配实际元素数量。

内容的提问来源于stack exchange,提问作者yalpsid eman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:57:01