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

438
Vistas
Angular - Validador personalizado condicional en un FormGroup dentro de un FormGroup

Tengo un formulario que necesita verificar si una de un grupo de casillas de verificación está marcada si un menú desplegable tiene un valor específico. Tengo un validador que funciona en las casillas de verificación, pero solo lo necesito para verificar si el menú desplegable es un valor específico. A continuación se muestra el formulario y el código de validación. He intentado que el validador se vincule así. RequireCheckboxesValidator.bind (esto), pero luego parece ignorar el validador.

 readonly closeFormGroup: FormGroup; constructor( formBuilder: FormBuilder, ) { this.closeFormGroup = formBuilder.group({ notes: [null], reason: [1, Validators.required], checkBoxGroup: new FormGroup({ checkBox1: new FormControl(false), checkBox2: new FormControl(false), checkBox3: new FormControl(false), checkBox4: new FormControl(false), checkBox5: new FormControl(false), } ,this.requireCheckboxesValidator()) }); } public requireCheckboxesValidator(): ValidatorFn { return function validate(formGroup: FormGroup) { let checked = 0; console.log(formGroup); Object.keys(formGroup.controls).forEach(key => { const control = formGroup.controls[key]; if (control.value === true) { checked++; } }); if (checked < 1) { return { requireCheckboxesToBeChecked: true, }; } return null; }; }
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puedo sugerir un enfoque diferente.
Puede suscribirse a valueChanges de su campo desplegable y luego, si el valor específico que se selecciona es lo que espera, puede usar addValidator para agregar el validador determinado a su control de formulario de casillas de verificación.
También me gusta su idea de agregar un validador personalizado (definitivamente el mejor enfoque) y también debería funcionar de esa manera. Por lo que entiendo, está tratando de agregar el validador para las casillas de verificación solo si el menú desplegable tiene un valor específico. En ese caso, debe cambiar su lógica a algo como:

 Object.keys(formGroup.controls).forEach(key => { const control = formGroup.controls[key]; if (control.value === true) { checked++; } let dropdownValue = undefined; if (key === 'dropdownFormControlKey') { dropdownValue = control.value; } }); if (checked < 1) { // --- Add check to also see if the dropdown's value is what you expect and only then return the error return { requireCheckboxesToBeChecked: true, }; } return null; };
  • Además, sugeriría no definir la función de validación en su componente, sino seguir este artículo para ver un enfoque adecuado: https://angular.io/guide/form-validation
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