angular - 如何获取具有相同表单控件名称的列表的值?
问题描述
我有 4 个使用 loop 生成的输入。我正在为 UI 使用角度形式,但问题是我只得到最后一个输入值,并且要求我需要所有输入值,前提是我无法生成 formControlName 动态。有没有办法绕过只获取最后一个值并获取所有值?
相同的 HTML 代码是(此循环将根据 dataArr 执行,这里假设它执行 4 次):
<form [formGroup]="dataForm">
<div *ngFor = "let data of dataArr;">
<input type="text" placeholder="Key" value={{data.key}} formControlName="key"/>
</div>
</form>
<button type="button" style="background-color: #4980FF;" (click)="save();">Save</button>
.ts 文件中的代码:
// it is initializing and registering the form value
dataForm = new FormGroup({
key: new FormControl('', [Validators.required])
});
save(){
// Here I am trying to print the form value
}
当我单击保存按钮时,我希望获取所有值,而不仅仅是最后一个值。
解决方案
您需要FormArray
改用
在您的组件中,创建您的FormGroup
和FormArray
.
this.dataForm = new FormGroup({
key: new FormArray(this.dataArr.map(data => new FormControl(data.key, [Validators.required])))
// Add other form groups or form controls here
});
save() {
console.log(this.dataForm.value);
}
将这些控件绑定在您form
喜欢的下方。您不需要value
属性,因为FormControl
它将为您绑定值。
<form [formGroup]="dataForm">
<div *ngFor="let data of dataArr; let i = index" formArrayName="key">
<input type="text" placeholder="Key" [formControlName]="i" />
</div>
</form>
<button type="button" style="background-color: #4980FF;" (click)="save();">Save</button>
推荐阅读
- facebook - Facebook Thumbnail Opacity
- unity3d - 统一的脚本不会改变
- react-native - Getting Redux Store correctly
- java - Use Jedis instance in Repository class - Dropwizard
- ruby - Ruby:与接受多个参数的方法交互的最佳方式是什么?
- javascript - 让 webpack 包含 html 文件
- android - Android resource linking failed due to missing boolean resource values using Jetpack Workflow
- solaris - 是什么导致 bfd_asm.c 中的 SunCC 崩溃?
- php - curl_multi_exec:一些下载的图像丢失了一些数据/流不完整
- azure-devops-extensions - 是否有与 WorkItemChangedEventHandler 功能相似的 VSTS 接口