Angular: Tambahkan ke Kumpulan Formcontrol Validator yang Ada

Nov 26 2020

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

GyörgySzy Nov 26 2020 at 15:21

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.)

Noname Nov 27 2020 at 10:03

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));