Сделать родительскую группу FormGroup недействительной до тех пор, пока вложенная группа FormGroups не будет действительной - пользовательский валидатор для FormGroup - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть проект 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;
};

В ответ на комментарий.После удаления валидатора родитель действителен, а потомок недействителен: child invalid, parent valid

...