angular - ngModel 在 Angular 表单中的意外行为
问题描述
以下代码将生成两个inputs
具有相同值bye
(而不是hello
and bye
)。如果有人可以(理论上)解释这种行为并说出确切的原因,那就太好了。
<form>
<div *ngFor="let item of ['hello', 'bye'];">
<input name="name" [(ngModel)]="item">
</div>
</form>
编辑:为了更好地解释我的问题:
原因不可能是因为它们绑定到同一个对象,它们将具有相同的值。如果是这样,则以下情况对于两个输入将具有相同的值,显然情况并非如此。
app.component.html
<form>
<div *ngFor="let item of arr;">
<input name="name" [(ngModel)]="item">
</div>
</form>
app.component.ts
arr = [1,4]
ngOnInit(){
setTimeout(()=>{
this.arr[1] = 5;
});
}
请注意:我想我已经正确解释了我的问题,以及为什么我认为@DeborahK 的解决方案似乎不适合我。我正在寻找这种行为的原因。而不是解决方法。另外,我知道更改name
每个输入会使其正常工作。所以请停止建议。
解决方案
名称属性应该是唯一的
<form>
<div *ngFor="let item of ['hello', 'bye'];let i =index">
<input name="{{i}}" [(ngModel)]="item">
</div>
</form>
推荐阅读
- javascript - 找不到 gm/convert 二进制文件 Node.js pdf-to-image 转换
- javascript - 使用 Google Drive API Node js 上传文件时,文件名是“无标题”
- go - 如何使用 k8s.io client-go rest API 请求传递容器名称
- java - 如何使用背景/异步任务制作线性/更具可读性的 Java 代码
- python - 如何使用 matplotlib 在此条形图的相应条形上方显示这些值?我的尝试不起作用
- pandas - 尽管两个变量都有数据类型对象,但获取 ufunc 'true_divide'
- r - 在多列上应用 Fisher 精确检验
- c++ - std::atomic 作为类成员:使用 boost/python.hpp 时使用已删除的函数错误
- javascript - 单击提交按钮后,布尔玛步骤未进行下一步
- git - git status 忽略换行符和空格的变化