Было несколько вещей, которые должны стать понятными в свете приведенного ниже кода ... на вашем stackblitz , замените код в следующих 2 файлах - проверьте файл console.log для разрешения вашеготакже ошибка.
заменить существующий app.component.ts следующим
import { Component } from '@angular/core';
import { FormBuilder, FormGroup, FormArray, FormControl } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
form: FormGroup
constructor(private fb: FormBuilder, ) { this.initiate(); }
insertedID: string;
insertedName: string;
fields = this.fb.group({
elementArray: this.fb.array([this.createElementData('1', 'car')])
});
initiate() {
const newRow2 = this.createElementData('2', 'bus');
this.elementArray.push(newRow2);
}
createNew() {
const newRow = this.createElementData(this.insertedID, this.insertedName);
this.elementArray.push(newRow);
}
get elementArray(): FormArray {
return this.fields.get("elementArray") as FormArray;
}
createElementData(passedID, passedName): FormGroup {
if (passedID == 0 || !passedID) {
passedID = this.elementArray.length + 1;
}
return this.fb.group({
id: [passedID],
name: [passedName],
statusVal: false
});
}
showData() {
if (this.fields.value.elementArray.length > 0) {
console.log(this.fields.value.elementArray);
}
}
}
export class Element {
id: string;
name: string;
statusVal: boolean;
}
заменить существующий app.component.html наследующее
<form [formGroup]="fields" class="example-form" (submit)="showData()">
Signes:
<div class='' formArrayName='elementArray' *ngFor="let item of fields.get('elementArray').controls; let i = index">
<div [formGroupName]="i">
<!-- <input type="text" formControlName="id" placeholder="Enter ID"> ID: [{{item.value.id}}] -->
<input type="checkbox" formControlName="statusVal" placeholder="Enter Name">
<!-- <input type="text" formControlName="name" placeholder="Enter Name"> -->{{item.value.name}}
</div>
</div>
<div class="buttonDiv">
<button type="submit" mat-raised-button color="primary">Enregistrer</button>
<br/><br/> form status: <mark>{{fields.status}}</mark>
</div>
</form>
<hr/>
<!-- <input type='text' [(ngModel)]="insertedID" placeholder="ID du nouveau véhicule" /> -->
<input type='text' [(ngModel)]="insertedName" placeholder="Ajouter un autre" />
<button mat-raised-button color="primary" (click)="createNew()"> Ajouter un nouveau véhicule et checkbox </button>