import { Injectable } from '@angular/core'
-import { FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms'
+import { AsyncValidatorFn, FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms'
import { BuildFormArgument, BuildFormDefaultValues } from '../form-validators/form-validator.model'
import { FormReactiveErrors, FormReactiveValidationMessages } from './form-reactive'
if (field?.MESSAGES) validationMessages[name] = field.MESSAGES as { [ name: string ]: string }
- const defaultValue = defaultValues[name] || ''
+ const defaultValue = defaultValues[name] ?? ''
if (field?.VALIDATORS) group[name] = [ defaultValue, field.VALIDATORS ]
else group[name] = [ defaultValue ]
form.addControl(
name,
- new FormControl(defaultValue, field?.VALIDATORS as ValidatorFn[])
+ new FormControl(defaultValue, field?.VALIDATORS as ValidatorFn[], field?.ASYNC_VALIDATORS as AsyncValidatorFn[])
)
}
}
+ updateTreeValidity (group: FormGroup | FormArray): void {
+ for (const key of Object.keys(group.controls)) {
+ const abstractControl = group.controls[key] as FormControl
+
+ if (abstractControl instanceof FormGroup || abstractControl instanceof FormArray) {
+ this.updateTreeValidity(abstractControl)
+ } else {
+ abstractControl.updateValueAndValidity({ emitEvent: false })
+ }
+ }
+ }
+
private isRecursiveField (field: any) {
return field && typeof field === 'object' && !field.MESSAGES && !field.VALIDATORS
}