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

Angular中调整*ngFor实例化元素展示结构,实现新元素底部追加

问题与解决方案

现有实现

我已实现向数组randomIntArray中添加随机数并展示的功能,代码如下:

<div *ngFor="let temp of randomIntArray; let i = index">
  <div *ngIf="i == randomIntArray.length - 1">
    This is the real random number {{ temp }}
    <div>
      <button (click)="addRandomValueIntoRandomIntArray()">
        add random number
      </button>
    </div>
  </div>

  <div *ngIf="i != randomIntArray.length - 1">
    {{ temp }}
  </div>
</div>

需求调整

目前每次点击addRandomValueIntoRandomIntArray()时,数组长度增加,DOM会创建新元素。当前通过*ngIf="i == randomIntArray.length - 1"让带按钮的元素始终作为最后一项显示,但我希望新创建的元素在底部向下排列,而非带按钮的元素每次被挤到最底部。

可行实现方式

核心思路是将按钮区域从循环中剥离,单独固定在列表底部,循环仅负责展示所有随机数:

<!-- 遍历展示所有随机数,新元素自动追加到列表末尾 -->
<div *ngFor="let temp of randomIntArray">
  {{ temp }}
</div>

<!-- 固定在底部的按钮区域,仅当数组有内容时显示 -->
<div *ngIf="randomIntArray.length > 0">
  This is the real random number {{ randomIntArray[randomIntArray.length - 1] }}
  <div>
    <button (click)="addRandomValueIntoRandomIntArray()">
      add random number
    </button>
  </div>
</div>

说明

  • 所有随机数按添加顺序从上到下排列,新添加的数会自动出现在列表最后(按钮区域的上方)
  • 按钮区域固定在页面最底部,不会随新元素的添加而移动
  • 通过*ngIf="randomIntArray.length > 0"避免数组为空时访问randomIntArray[randomIntArray.length - 1]导致的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:24:36