Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
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']
about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Actualmente no se admite la lectura de validadores de un control

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

about 4 years ago · Santiago Trujillo Report

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

about 4 years ago · Santiago Trujillo Report

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.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!