Saltar al contenido

Angular: agregar/eliminar validadores dinámicamente

Hola usuario de nuestro sitio web, tenemos la respuesta a lo que buscabas, desplázate y la encontrarás aquí.

Solución:

Los formularios angulares tienen una función integrada setValidators() que permite la asignación programática de validadores.

Para tu ejemplo puedes hacer:

if(this.businessFormGroup.get('businessType').value !== 'Other')
    this.businessFormGroup.controls['description'].setValidators([Validators.required, Validators.maxLength(200)]);              
 else                 
    this.businessFormGroup.controls['description'].setValidators([Validators.maxLength(200)]);               

Es importante tener en cuenta que al usar este método, sobrescribirá sus validadores existentes por lo que deberá incluir todos los validadores que necesita/quiere para el control que está reiniciando.

este me funciono

   onAddValidationClick()
         this.formGroup.controls["firstName"].setValidators(Validators.required);
        this.formGroup.controls["firstName"].updateValueAndValidity();
      

onRemoveValidationClick()
         this.formGroup.controls["firstName"].clearValidators();
        this.formGroup.controls["firstName"].updateValueAndValidity();
      

Si cambia el “validador requerido” más de una vez (por ejemplo, usando una casilla de verificación), debe agregar esto:

this.formGroup.controls["firstName"].setErrors(null);

Asi que:

  onAddValidationClick()
         this.formGroup.controls["firstName"].setValidators(Validators.required);
        this.formGroup.controls["firstName"].updateValueAndValidity();
      

onRemoveValidationClick()
         this.formGroup.controls["firstName"].setErrors(null);
         this.formGroup.controls["firstName"].clearValidators();
        this.formGroup.controls["firstName"].updateValueAndValidity();
      

Calificaciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *