You need to enable JavaScript to run this app. Angular输入框列表绑定动态[*ngModel]出现0 undefined报错如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Angular输入框列表绑定动态[*ngModel]出现0 undefined报错如何解决?

问题根因

你遇到的0 is undefined报错由ngModel绑定逻辑错误导致:
你在模板中写的fruit.name[i]会尝试读取当前fruit对象下name属性的第i个元素,但你的fruit对象中既不存在名为name的数组属性,初始定义的name1属性也不符合通用的列表项结构,读取不存在的属性的下标自然会抛出未定义错误。


修复方案

1. 调整TS代码

统一列表项的对象结构,同时实现addNewInput方法,每次点击向数组追加新的空对象触发列表重渲染:

// 定义明确的类型避免后续类型错误,不需要用any
fruits: {name: string}[] = [
  {
    name: 'Apple'
  }
]

addNewInput() {
  this.fruits.push({ name: '' })
}

2. 调整模板绑定

循环中直接绑定当前项的name属性即可,不需要额外加索引:

<div *ngFor="let fruit of fruits; let i = index">
  <input type="text" [(ngModel)]="fruit.name" />
</div>
<button (click)="addNewInput()">Add new fruit</button>

如果你确实有需要给每个对象的属性名加上数字后缀的特殊需求,可以改用fruit['name' + i]的动态属性写法,但不推荐该用法,统一属性名的结构维护成本更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 18:06:06