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

Angular房租计算器for循环首索引未显示初始租金问题求助

解决Angular房租计算器初始租金显示问题

问题出在你的calculate()方法逻辑上:当前循环的第一次迭代直接计算了涨幅后的租金并存入数组,导致Year 1显示的是涨过价的数值,而非初始租金。

修改后的TS代码

export class RentCalculatorComponent {
  constructor() { }

  increase: number = 0;
  years: number = 0;
  rent: number = 0;
  total: number[] = [];
  nextYearCalculatedRent: number = 0;

  calculate() {
    // 每次计算前清空数组,避免重复计算叠加数据
    this.total = [];
    // 重置计算缓存,防止上次计算结果干扰
    this.nextYearCalculatedRent = 0;

    // 先存入初始租金作为第一年的数值
    this.total.push(Math.round((this.rent + Number.EPSILON) * 100) / 100);
    
    // 从第二年开始计算涨幅,循环次数为years-1次
    for (let i = 1; i < this.years; i++) {
      // 用上一年的租金(数组最后一项)计算当年涨幅后的值
      const previousRent = this.total[i - 1];
      this.nextYearCalculatedRent = previousRent + (previousRent * this.increase / 100);
      this.total.push(Math.round((this.nextYearCalculatedRent + Number.EPSILON) * 100) / 100);
    }
  }
}

关键修改点说明

  • 每次计算前清空total数组,避免多次点击Calculate按钮后数组数据叠加
  • 首先将初始租金直接存入数组的第一个位置,对应Year 1的显示
  • 循环从第2年(索引1)开始,基于数组中前一年的租金计算当年涨幅后的值,确保每一年的数值逻辑正确
  • 重置nextYearCalculatedRent变量,防止上次计算的残留值影响新的计算
  • 给变量添加明确的类型声明(number),提升代码可读性和类型安全性

HTML代码无需修改

你的HTML部分逻辑是正确的,*ngFor会按数组顺序依次显示每一年的租金,修改TS逻辑后即可正常显示初始租金。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:50:40