Narożna niestandardowa kontrola pól FormArray (Bierna forma)

0

Pytanie

Jestem nowy w Angular i chciałbym sprawdzić, jak wykonać sprawdzanie poprawności pól niestandardowych dla FormArray?

Formatowanie jest dynamiczny, w którym można przenieść lub usunąć elementy z grupy form. Grupa form składa się z pól 1, 2, 3. Jeśli jedno z pól nie jest równa zero, pozostałe pola muszą być ustawione za pomocą walidatora.koniecznie. Forma jest ważna, jeśli wszystkie pola albo puste albo wypełnione.

Dziękuję.

Poniżej znajduje się przykład kodu:

formA!: FormGroup;

initializeForm(): void {
    this.formA = this.fb.group({
      item1: this.fb.array([this.createItem1()]),
      item2: this.fb.array([this.createItem2()]),
    });
  }

createItem1(): FormGroup {
   return this.fb.group({
       field1: null,
       field2: null,
       field3: null,
   });
}

1

Najlepsza odpowiedź

0

Spróbuj to.

createItem1(): FormGroup {
  const fg = this.fb.group({
      field1: null,
      field2: null,
      field3: null,
  });
   
  const validatorFn = (control: AbstractControl): { [key: string]: any } | null => {
    const obj = fg.getRawValue();
     
    if (obj.field1 || obj.field2 || obj.field3) {
      return Validators.required(control);
    }
     
    return null;
  };
   
  for (const control of Object.values(fg.controls)) {
    control.setValidators(validatorFn);
  }

  return fg;
}

Także trzeba będzie wykonać updateValueAndValidity() dla wszystkich elementów sterowania po naciśnięciu klawisza.

2021-11-25 00:55:40

Witam, mam do czynienia z podanych poniżej w "fg.controls", kiedy próbował to zrobić. można doradzić? Typ "{ [klucz: string]: Streszczenie kontroli;} "musi mieć metodę" [Symbol.iterator] (), który zwraca iterator.ts(2488)
braveducky

Poprawiłem swoją odpowiedź. Proszę, sprawdź jeszcze raz.
N.F.

Witam, dziękuję za pomoc. Dokonałem pewnych zmian, odpowiednie do mojego wariantu użycia, i dodał dodatkowy warunek do czyszczenia walidator, gdy nie jest to wymagane. W ogóle, w końcu wszystko wychodzi.
braveducky

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................