Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

390
Vistas
Angular 2 FormGroup Agregar validadores dinámicos

Estoy tratando de agregar un validador a FormContol dinámico (no en la inicialización) y no funciona...

el código:

 this.formGroup.controls["firstName"].validator = Validators.Required;

¿Alguien lo hizo?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Prueba esto, debería funcionar

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

Para múltiples validadores

 this.formGroup.controls["firstName"].setValidators([Validators.required, Validators.minLength(2)]);

Pero hacerlo anulará cualquier validador que se proporcione durante la inicialización.

EDITAR :

Para reflejar los controles de formulario con Validators recién agregados inmediatamente, debemos llamar a this.formGroup.controls["firstName"].updateValueAndValidity(); después de configurar validadores dinámicamente.

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

DEMO para el mismo

* NOTA *

updateValueAndValidity() activará un evento valueChanges incluso si el valor realmente no cambió (lo que podría generar un bucle infinito, si lo llama desde una suscripción valueChanges). Puede evitar eso usando el objeto de parámetro opcional: { onlySelf: true, emitEvent: false}

about 4 years ago · Santiago Trujillo Denunciar

0

Si bien la respuesta de Amit Chigadani es correcta, tenga en cuenta lo siguiente.

Si bien esta solución funciona para actualizar los validadores, los nuevos validadores no se ejecutarán hasta que cambie el valor de los campos del formulario. por lo tanto, se recomienda ejecutar la siguiente función inmediatamente después de actualizar sus validadores;)

En términos simples: agregue la línea, si desea que sus clases ng-valid y ng-invalid se actualicen.

 this.formGroup.controls["firstName"].setValidators([Validators.required, Validators.minLength(2)]); this.formGroup.controls["firstName"].updateValueAndValidity();

En caso de que solo desee actualizar el valor y la validez de este control único, agregue esta opción

 this.formGroup.controls["firstName"].setValidators([Validators.required, Validators.minLength(2)]); this.formGroup.controls["firstName"].updateValueAndValidity({onlySelf: true});

Otra nota al margen. En Angular2, uno no debería usar la sintaxis de matriz para obtener controles de grupos de formularios, pero esto

 this.formGroup.get("firstName");

Que también acepta la notación de punto

 this.formGroup.get("userSectionFormGroup.firstName");
about 4 years ago · Santiago Trujillo Denunciar

0

obtuve la solución que podemos hacer con el siguiente código.

 const validators = new Array<Validators>(); validations.forEach(validation => { switch (validation.Type) { case 'required': validators.push(Validators.required); break; case 'minLength': validators.push(Validators.minLength(parseInt(validation.Expression, 10))); break; case 'maxLength': validators.push(Validators.maxLength(parseInt(validation.Expression, 10))); break; case 'pattern': validators.push(Validators.pattern(validation.Expression)); break; } }); this.form.controls[i].setValidators(validators); } } });
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda