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

258
Vistas
Compruebe si se requiere NgControl

Tengo varios componentes personalizados que envuelven componentes PrimeNG por varias razones. Algunas instancias de mis componentes se utilizan en formularios reactivos, y el "requisito" del campo se establece mediante el validador Validators.required .

Los componentes de PrimeNG proporcionan un atributo required .

¿Cómo puedo inspeccionar el NgControl de mi componente para el validador requerido? Hay .disabled e .invalid , pero .invalid podría significar cualquier cosa.

Aquí tengo lo que estoy usando ahora, que funciona para los menús desplegables, pero sería incorrecto para cualquier otro tipo de entrada.

 @Component({ selector: 'my-component', templateUrl: 'my.component.html' }) export class MyComponent implements OnInit, ControlValueAccessor { @Input() public disabled: boolean @Input() public required: boolean constructor( @Optional() @Self() public ngControl: NgControl ) { if (this.ngControl != null) { this.ngControl.valueAccessor = this; } } ngOnInit() { if (this.ngControl) { this.required = this.ngControl.invalid; this.disabled = this.ngControl.disabled; } } }

Estoy seguro de que hay una mejor manera de hacer esto, pero no veo cómo.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Intente verificar si el control tiene un validador required o no como el siguiente:

 ngOnInit() { if (this.ngControl) { this.required = this.hasRequiredValidator(this.ngControl.control); this.disabled = this.ngControl.disabled; } } hasRequiredValidator(control: AbstractControl): boolean { if (control.validator) { const validator = control.validator({} as AbstractControl); if (validator && validator.required) { return true; } } return false; }
over 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