Ваш HTML шаблон должен выглядеть примерно так:
<div formArrayName="items" *ngFor="let item of items.controls; let i=index">
<div [formGroupName]="i" class="well">
<input type="checkbox" formControlName="isChecked" />
</div>
<div *ngIf="isChecked.invalid && (isChecked.dirty || isChecked.touched)"
class="alert alert-danger">
<div *ngIf="isChecked.errors.required">
Checkbox is required.
</div>
</div>
</div>
<button type="button" (click)="addItem()">Add Item</button>
Файл компонента должен содержать FormGroup с FormArray, называемым элементами, определенными в нем.
this.formGroup = this.formBuilder.group({
items: this.formBuilder.array([])
})
Приведенный ниже код является свойством геттера для легкого доступа.
get items(): FormArray {
return this.formGroup.get('items') as FormArray;
}
Чтобы добавить флажок при нажатии.
private addItem(): void {
this.items.push(this.buildItem());
}
private buildItem(): FormGroup {
return this.formBuilder.group({
id: [''],
isChecked: [false, Validators.required],
});
}
Примечание. Я не пробовал, поэтому исправьте синтаксис по мере необходимости.