angular - Angular - 如何在 ngFor 循环表中使用 formcontrol
问题描述
我是 Angular 8。在这里我在数据摘要中创建表单控件时遇到了一些错误
<table>
<thead>
<tr >
<th>Sl.No</th>
<th> First Name </th>
<th> Middle Name </th>
<th> Last Name </th>
<th> Limit </th>
<th>Select Data</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let data of PersonList; index as i">
<td>{{i+1}}</td>
<td>{{data .firstname}}</td>
<td>{{data .middlename}}</td>
<td>{{data .lastname}}</td>
<td>
<span>{{limit.value}}</span>
<mat-slider #limit
step="1" min=0 max=100 [formControl]="limit"></mat-slider>
</td>
<section class="example-section">
<mat-checkbox class="example-margin"
></mat-checkbox>
</section>
</tr>
<button class="btn btn-outline-primary"
(click)="dataset( PersonList)">Submit</button>
</tbody>
</table>
我的 ts 文件是
limit = new FormControl('');
dataset(data){
console.log('data', data)
}
这里我的要求是我有三个数据人员列表
{
"data": [
{
"firstname":"A",
"middlename":"A",
"lastname":"A",
},{
"firstname":"AA",
"middlename":"AB",
"lastname":"Ac",
},{
"firstname":"AAA",
"middlename":"ABB",
"lastname":"ACC",
}
]
}
我需要为个人设置限制,所以我在表格中创建了表单控件并
条件二是
如何通过选中复选框但在使用提交按钮后传递单个数据,如第一个数据或一个和两个数据
例如
{
"firstname":"A",
"middlename":"A",
"lastname":"A",
"limit":"10000"
}
或者
{
"firstname":"A",
"middlename":"A",
"lastname":"A",
"limit":"10000"
},
{
"firstname":"AA",
"middlename":"AB",
"lastname":"AC",
"limit":"200000"
}
如何在提交中选择和提交特定数据
解决方案
您可以使用 FormArray
let formArray = new FormArray([]);
for(let i of data) {
formArray.push(
new FormGroup({
'firstname': new FormControl(data.firstname);
'middlename': new FormControl(data.firstname);
'lastname': new FormControl(data.firstname);
'limit': new FormControl(null);
})
)
this.formGroup = new FormGroup({
'data': formArray
});
}
然后你可以添加这个功能
get controls() {
return (<FormArray>this.formGroup.get('data')).controls;
}
然后在你的 HTML
<tbody formArrayName="data">
<tr *ngFor="let dataCtrl of controls; let i = index" [formGroupName]="i">
<td>{{i+1}}</td>
<td>{{dataCtrl.value.firstname}}</td>
<td>{{dataCtrl.value.middlename}}</td>
<td>{{dataCtrl.value.lastname}}</td>
<td>
<span>{{dataCtrl.value.limit}}</span>
<mat-slider #limit step="1" min=0 max=100 formControlName="limit">
</mat-slider>
</td>
<section class="example-section">
<mat-checkbox class="example-margin"></mat-checkbox>
</section>
</tr>
</tbody>
推荐阅读
- java - 使用 JDBC 将 SQL Server 2012 与 Java 连接起来
- google-apps-script - 我的问题是关于谷歌表循环遍历一系列单元格和排名分数
- amazon-web-services - 如何使用 IAM 策略限制 ListBucket 结果以列出特定文件夹?
- android - 这
元素必须是 库清单中的元素 - codeigniter - localhost(Xampp)上的 Codeigniter 不断重定向到 https://www.localhost:1234/
- javascript - Firebase 云函数 promise.all
- github - 有没有办法在你的 GitHub 存储库中隐藏新的“使用者”指标?
- java - 如何从 JFlex 中的 .bnf 解析器中引用属性?
- java - 在 Appium 和 Java 中找不到 ID
- javascript - 将动态按钮的值传递给模态表单