Porównaj ceny domen i usług IT, sprzedawców z całego świata

Jak sprawdzić wyłączone kontrolki za pomocą formularzy reaktywnych (walidacja nie rozpocznie się)


Powiedzmy, że mam taką strukturę formularza:
this.entryForm = this.formBuilder.group({
date: [{value:'' , disabled: true}, [Validators.required]],
notes: [''],
sum_credit: [{value:'', disabled: true }],
sum_debit: [{value:'', disabled: true}],
items: this.initItems()
});
// set validation function to sum_credit this.entryForm.controls['sum_credit'].setValidators([CommonValidations.validateSomthing(...)]);

sum_credit
jest wyłączony, ponieważ jego wartość jest zawsze obliczana.
Teraz muszę sprawdzić, czy
sum_credit
jest równe
sum_debit
i już to robię za pomocą funkcji
validateSomthing
.
Problem polega na tym, że
validateSomthing
nie uruchamia się, ponieważ formant jest wyłączony. Jak mogę to naprawić?
podziękować
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Angular nie wywołuje walidatorów dla pól wyłączonych.
Jednym ze sposobów obejścia tego problemu jest zastosowanie walidatora do grupy zamiast do kontrolki (spowoduje to wywołanie walidatora przy każdej aktualizacji dowolnej kontrolki formularza, która nie jest wyłączona w odpowiedniej grupie:
this.entryForm = this.formBuilder.group({
date: [{value:'' , disabled: true}, [Validators.required]],
notes: [''],
sum_credit: [{value:'', disabled: true }],
sum_debit: [{value:'', disabled: true}],
items: this.initItems()
}, { validator: CommonValidations.validateSomthing(...) });

Zwróć uwagę, że musisz dostosować funkcję walidatora, aby odczytać wartość z kontrolki sum_debit:
validateFn(group: AbstractControl) {
const control = group.get('sum_debit');
// here you can validate control.value;
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się