У меня есть проект Angular 7 для динамического создания форм.У меня есть одна родительская FormGroup с вложенными FormGroups различных типов.
Я хочу, чтобы parentForm был недействительным до тех пор, пока все вложенные / подчиненные формы не будут действительными (фактически хотят, чтобы они были отправлены, но еще не дошли).
this.parentForm = new FormGroup(this.subforms, { validators: allSubModulesValidValidator });
this.subforms - это такой объект:
interface DynamicKeyFormGroup {
[key: string]: FormGroup;
}
subforms: DynamicKeyFormGroup = {};
Я знаю, что мой валидатор неверен, но я не могу понять, как спроектировать валидатор для FormGroup против FormControl.
Идея состоит в том, что я пытаюсь перебрать все свойства this.subForms, которые являются вложенными FormGroups, а затем проверяю их состояние.Если они недействительны, пометьте parentForm как недействительный.
const allSubModulesValidValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => {
const controls = control.controls;
for (const key in controls) {
if (controls.hasOwnProperty(key)) {
if (!(controls[key].status === 'valid')) {
return { 'allSubModulesValid': true };
}
}
}
return null;
};
В ответ на комментарий.После удаления валидатора родитель действителен, а потомок недействителен: