l oop, который вы используете внутри шаблона, создает несколько форм, использующих один и тот же FormControl. Есть несколько способов исправить это, один с помощью FormArray, но я думаю, что использование атрибута item_id
для идентификатора FormControl является самым простым способом получить доступ к элементу управления в шаблоне с помощью form.controls[id]
form: FormGroup = new FormGroup({});
allData = [
{
"item_name": "Test 1",
"item_id": "1",
},
{
"item_name": "Test 2",
"item_id": "2",
},
{
"item_name": "Test 3",
"item_id": "3",
},
{
"item_name": "Test 4",
"item_id": "4",
},
{
"item_name": "Test 5",
"item_id": "5",
},
];
allDataGroups = [
{
"display_name": "Group 1",
"group_id": "1",
},
{
"display_name": "Group 2",
"group_id": "2",
},
{
"display_name": "Group 3",
"group_id": "3",
}
];
constructor() {
this.createFormControls()
}
private createFormControls() {
for (const datum of this.allData) {
const id = datum.item_id;
this.form.addControl(id, new FormControl())
}
}
<div class="container">
<form [formGroup]="form">
<div *ngFor="let datum of allData">
<span>{{ datum.item_name }} / Item ID #{{ datum.item_id }}</span>
<select style="display: block" [formControlName]="datum.item_id">
<option *ngFor="let group of allDataGroups" [value]="group.group_id">
{{ group.display_name }}
</option>
</select>
<button>Assign Group</button>
</div>
</form>
</div>