Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

399
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda