【发布时间】:2019-11-15 21:43:34
【问题描述】:
当尝试 *ngFor 在角度数组上生成输入文本元素并绑定到数组中的值时,我遇到了一些问题。当用户在文本输入中输入内容时,该值未正确绑定。
我尝试在更新数组后运行 changeDetection 但没有帮助。
在下面的代码示例中,我使用字符串值“test”的数据数组单击添加按钮时生成输入元素。输入的 [ngModel] 绑定到 Array 中的值。所以我希望所有输入都具有“测试”的价值。
但是当我们尝试在输入中输入一些值然后单击添加按钮时,生成的输入不会绑定到数组中的值。
https://stackblitz.com/edit/angular-uywkxr
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<button (click)="onAdd()">Add</button>
<br/><br/>
<input
*ngFor="let d of data;let i = index;trackBy:trackByfn"
type="text"
[ngModel]="data[i]"
>
<br/><br/>
data: {{data|json}}
`,
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
data = ['test'];
onAdd() {
this.data.push('test');
}
trackByfn = (index) => index;
}
【问题讨论】:
-
您错过了数据的两种方式绑定
[(ngModel)]="data[i]" -
我们可以不使用双向绑定吗?我不希望输入修改数据,只想要一种方式更新。单击“添加”按钮时,所有输入都需要在数组中具有值。单向绑定不是这样工作的吗?
-
@San:有任何答案对你有用吗?如果是,请考虑接受/支持他们。 What should I do when someone answers my question?
标签: angular typescript data-binding ngfor