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

Angular:如何在HTML页面显示对象数组的长度

问题分析与解决方案

你当前的代码问题出在访问了单个对象的length属性,而不是数组本身的length。

为什么页面没有显示?

在你的*ngFor循环里,hero是heros数组中的单个元素(比如{"name":"batman", "id":"A1001"}),这是一个对象,对象并没有length属性,所以{{hero.length}}会输出undefined,页面自然看不到任何内容。而且就算能显示,也会因为循环重复显示三次,这显然不是你想要的“总数量”效果。

正确的写法

1. 单独显示总英雄数量(推荐)

直接在*ngFor循环外面或者页面任意位置使用{{heros.length}},不需要嵌套在循环里:

<!-- 先显示总数量 -->
<div>Number of heros are {{heros.length}}</div>

<!-- 再遍历每个英雄显示详情 -->
<div *ngFor="let hero of heros">
  <div>Name: {{hero.name}}, ID: {{hero.id}}</div>
</div>

2. 若需在循环内显示总数量(特殊场景)

如果因为需求必须在每个英雄项旁显示总数量,直接访问数组的length即可:

<div *ngFor="let hero of heros">
  <div>Hero: {{hero.name}}</div>
  <div>Total heros: {{heros.length}}</div>
</div>

额外注意事项

确保你的组件中已经正确初始化了heros数组:

// 组件类中的代码示例
export class YourComponent {
  heros = [
    { "name":"batman", "id":"A1001" },
    { "name":"superman", "id":"A1002" },
    { "name":"spiderman", "id":"A1003" }
  ];
}

如果heros是通过异步请求获取的(比如HTTP请求),记得用async管道确保数据加载完成后再访问:

<div *ngIf="heros$ | async as heros">
  <div>Number of heros are {{heros.length}}</div>
  <div *ngFor="let hero of heros">
    <div>{{hero.name}}</div>
  </div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:34:07