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

88
Visualizações
Angular2 obtiene validadores existentes de un control de formulario

Digamos

 surname = new FormControl('', [Validators.required, Validators.minLength(2)]);

En algún momento, dependiendo de la situación, puedo agregar o eliminar validadores en el control de apellidos.

Al final ¿Cómo sé qué validadores existen en el control de apellidos? No pude encontrar nada en la documentación ni volcando el control en la consola.

Algo como

 surname.getValidators() should return - ['required', 'minLength']
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Actualmente no se admite la lectura de validadores de un control

Ver también https://github.com/angular/angular/issues/13461

over 4 years ago · Santiago Trujillo Relatório

0

Puede mostrar mensajes de error como este:

 onValueChanged(data?: any) { if (!this.heroForm) { return; } const form = this.heroForm; for (const field in this.formErrors) { // clear previous error message (if any) this.formErrors[field] = ''; const control = form.get(field); if (control && control.dirty && !control.valid) { const messages = this.validationMessages[field]; for (const key in control.errors) { this.formErrors[field] += messages[key] + ' '; } } } } formErrors = { 'name': '', 'power': '' }; validationMessages = { 'name': { 'required': 'Name is required.', 'minlength': 'Name must be at least 4 characters long.', 'maxlength': 'Name cannot be more than 24 characters long.', 'forbiddenName': 'Someone named "Bob" cannot be a hero.' }, 'power': { 'required': 'Power is required.' } };

Consulte: https://angular.io/docs/ts/latest/cookbook/form-validation.html#!#reactive-component-template

over 4 years ago · Santiago Trujillo Relatório

0

La respuesta de Günter Zöchbauer sigue siendo correcta en Angular 6, pero hay una solución que funciona bien para mí.

Mi solución depende de dos observaciones:

Primero, puede ver qué validaciones están fallando actualmente, mirando las claves en el objeto de errors . Entonces, si tiene especificados Validators.required y Validators.minLength , el objeto de errores se vería así:

 { required: true, minlenght: { ... } }

Eso es lo suficientemente bueno para muchos casos de uso, cuando realmente no le importa si existe un validador pero no impide el envío de formularios.

En segundo lugar, resulta que Angular creará validadores para que coincidan con los atributos establecidos en su entrada. Entonces, para los validadores estándar, mi sugerencia sería no especificar el validador en absoluto .

Haz algo como esto en su lugar:

 <input type="text" formControlName="surname" [required]="surnameRequired">

En su formulario de declaración:

 form = this.formBuilder.group({ surname: '', anotherField: ['', Validators.required], yetAnotherField: ['', Validators.required] });

Y luego establezca el valor de surnameRequired para agregar o eliminar el validador.

Tengo un StackBlitz en funcionamiento .

Mi enfoque no funciona para validadores personalizados, pero la mayor parte de mis casos de uso no los usan. Su experiencia puede ser diferente.

over 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