Angular: Tambahkan ke Kumpulan Formcontrol Validator yang Ada
Bagaimana cara menambahkan atau mendorong ke kumpulan Validator yang ada di FormControl? Saya ingin menambahkan sebagai array. Jawaban berikut hanya akan mengatur semuanya sekaligus.
Di Angular, bagaimana cara menambahkan Validator ke FormControl setelah kontrol dibuat?
Angular - Tambahkan / hapus validator secara dinamis
newFormControl.setValidators([Validators.required])
newFormControl.setValidators([Validators.pattern("^[0-9]*$")])
newFormControl.setValidators([Validators.maxLength])
Jawaban
SetValidators () MENGHAPUS validator sebelumnya, jadi Anda mungkin ingin mengumpulkan validator Anda secara terpisah, dan misalnya menyimpannya dalam dua variabel, dan mengaturnya dengan satu setValidators () sesuai kebutuhan.
const validators1 = [Validators.required, Validators.pattern("^[0-9]*$"), Validators.maxLength(10)])]
const validators2 = [Validators.required]
if( if_you_want_all_three_validators ){
newFormControl.setValidators(validators1)
} else {
// by default you want only one validator:
newFormControl.setValidators(validators2)
}
Jadi dengan cara ini Anda tidak perlu mengaturnya satu per satu.
(Karena validator tidak disimpan dalam array indside setValidators (), Anda harus mengirim semua validator ke setValidators hanya dengan satu panggilan.)
Anda dapat mengatur array dengan new Array<ValidatorFn>();, dan mendorong validator di bawah satu per satu.
let validatorList = new Array<ValidatorFn>();
validatorList.push(Validators.required);
validatorList.push(Validators.pattern("^[0-9]*$"));
validatorList.push(Validators.maxLength(item.characterLimit));
newForm.addControl('test', new FormControl(d'5', validatorList));