Вам нужно создать пользовательских валидаторов для формы и подчиненных форм в массиве.
Форма действует только при установленном флажке. И выглядит как
formValidator(control: AbstractControl): { [key: string]: any } {
return control.value.rows.some(i => i.checkbox_value) ? null : { 'checkboxReq': 'Some checkbox field is required' }
}
Добавьте его к себе
this.myForm.setValidators([this.formValidator.bind(this)])
В шаблоне вы можете получить его с помощью myForm.getError('checkboxReq')
<small class="form-text text-muted danger">{{myForm.getError('checkboxReq')}}</small>
Для подчиненной формы нужен другой валидатор
subFormValidator(control: AbstractControl): { [key: string]: any } {
return control.value.checkbox_value ? { 'req': 'This field is required' } : null
}
Добавьте его, когда вы инициализируете свою подформу.
(this.fb.group({
checkbox_value: [null],
material_id: [{ value: x.id, disabled: true }],
material_name: x.name,
quantity: [null]
}, [this.subFormValidator.bind(this)]));
Template
<small class="form-text text-muted danger" *ngIf="row.invalid && row.touched">This field is required</small>
пример стекаблика с изменениями