angular - *ng用于在添加新输入元素时重置所有表单值

标签 angular typescript data-binding ngfor ng-modal

我有一个 Angular2 应用程序,它带有一个按钮,可以将另一笔贷款添加到我的贷款中。我的 *ngFor 也很简单:

    <div *ngFor="let loan of myLoans">
      <label>{{loan.name}}</label>
      <input type="text" name="loan.name" [(ngModel)]="loan.amount">
    </div>

myLoans 是一组带有 nameamount 参数的 Loan 对象。我的按钮也很简单。

<button id="addLoan" type="button" (click)="addLoan()">Legg til lån</button>

addLoan() 函数:

addLoan(): void{
    var newLoan = new Loan();
    this.myLoans.push(newLoan);
}

我的问题是,当我在列表中添加新贷款时,我在其他贷款的输入字段中的任何值都将返回 0 或我在贷款对象的构造函数中设置的任何值。

加载应用显示此图片

What now

ngModel 在输入数字时正常工作

enter image description here

按下“Legg til lån”按钮后,第一个输入的值被重置

enter image description here

如果我尝试输入另一个数字,ngModel 仍在为第一个输入工作

enter image description here

有人知道这里发生了什么吗?

最佳答案

AJT_82 接近问题,因为非唯一名称给您带来了问题,但是您可以通过将模板 html 更改为这个

<div *ngFor="let loan of myLoans">
  <label>{{loan.name}}</label>
  <input type="text" [name]="loan.name" [(ngModel)]="loan.amount">
</div>

注意将名称放在 [ ] 中的变化。这将确保模板保持指向名称的链接,只要每笔贷款的名称是唯一的,标识符也是唯一的。

更新: 如果名称不唯一,您可以为其添加索引以使其像这样唯一。

<div *ngFor="let loan of myLoans; let i=index">
  <label>{{loan.name}}</label>
  <input type="text" [name]="loan.name + '_' + i" [(ngModel)]="loan.amount">
</div>

关于angular - *ng用于在添加新输入元素时重置所有表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664339/

相关文章:

javascript - 延迟加载的特性可以在 Angular 6 中使用 ngrx 来传递特性之间的状态吗?

android - 无法使用数据绑定(bind) Android 从 ViewModel 与 XML 通信

angular - ng generate application <app-name> 和 ng new <app-new> 之间的区别

angular - 在模板中使用异步管道会导致 Angular 11 中出现多个请求

javascript - 为什么 TypeScript 允许在方法中省略 "this"?

javascript - Angular 2 - 在模板中的变量内显示变量

javascript - ExtJs 与转换器的绑定(bind)(公式)

wpf - 如何在 Window.Resources 标签中使用带有数据绑定(bind)的 View 模型、模型、命令类?

angular - 如何在 Angular 2 中对模糊进行表单模型更新

angular - 如何使用给定的注入(inject) token 将依赖项注入(inject)提供者?