I am attempting to add a radio button group to a FormArray. The issue is that when I select a value, it changes the value for every member of the FormArray. I know this has to do with the formControlName, but I don't know how to make the formControlName dynamic. I've looked at this post but it's 4 years old and a little vague; i.e., I couldn't come to a clear answer therefrom.
This is what I currently have:
TS component
//inputs and variable initialization
ngOnInit() {
this.createSensorForm();
}
createSensorForm() {
this.sensorForm = this.fb.group({
...
definitions: this.fb.array([this.createDefinition()])
});
}
createDefinition(): FormGroup {
return this.fb.group({
numeric: [""],
});
}
addDefinition() {
this.definitions = this.sensorForm.get('definitions') as FormArray;
this.definitions.push(this.createDefinition());
}
HTML component
<form [formGroup]="sensorForm" (ngSubmit)="createSensor()">
...
<div formArrayName="definitions"
*ngFor="let definition of sensorForm.get('definitions').controls; let i = index;">
<div [formGroupName]="i">
...
<input type="radio" [value]="true"
formControlName="numeric" [(ngModel)]="numeric"> Yes
<input type="radio" [value]="false"
formControlName="numeric" [(ngModel)]="numeric"> No
</div>
</div>
<button class="btn btn-primary" type="button" (click)="addDefinition()">
<i class="fa fa-plus"></i> Add Definition
</button>
</form>