es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo arreglar el validador de Angular que permite enviar minHours independientemente del error.

Hay un validador personalizado que actualmente no funciona cuando el usuario confirma los cambios en minHours. El usuario puede guardar sus cambios incluso cuando el validador muestra un error. ¿Cuál sería la mejor manera de solucionar este problema en Angular?

Aquí está el requisito: Cuando retireeClassLink = ‘No’, minHrs no debe poder enviarse por debajo del valor mínimo. Y cuando el plan no tiene el slug, entonces el valor mínimo puede disminuirse (incluido el valor 0) o aumentarse.

ProductsFormInitializer.TS

private minHoursValidator(formControl: FormControl) {
const required = EbValidators.required(formControl);
if (required || this.data.is2To9) {
return required;
}
if (formControl.parent && formControl.parent.parent && formControl.parent.parent.get(‘erppEeMinEligHrsNo’)) {
let min = +FormUtils.getControl(formControl.parent.parent, ‘erppEeMinEligHrsNo’).value;
if (formControl.parent.parent.value.retireClassLink && formControl.parent.parent.value.retireClassLink.ebBenefitValues.benvalBenefitValue === ‘Yes’) {
min = 0;
}
if (+formControl.value < min) {
return { ‘minHrs’: ‘Las horas no pueden ser inferiores a ‘ + min + ‘.’ };
}
} else {
return null;
}
}

this.addValidator(classForm, ‘erclasHrWorkEligNo’, [this.minHoursValidator.bind(this)]);

Estaba pensando en agregar explícitamente la siguiente condición:

else if (formControl.parent.parent.value.retireClassLink && formControl.parent.parent.value.retireClassLink.ebBenefitValues.benvalBenefitValue === ‘No’) {
return { ‘minHrs’: ‘Las horas no pueden ser inferiores a ‘ + min + ‘.’ };
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La mejor manera de solucionar este problema en Angular sería agregar una condición adicional a la función minHoursValidator, verificando explícitamente si el valor de retireClassLink es “No”. Si es “No”, entonces el validador debería devolver un mensaje de error y evitar que el usuario guarde los cambios si el valor de minHours está por debajo del valor mínimo.

    Para implementar esto, puedes agregar el siguiente bloque de código después de la condición actual que verifica retireClassLink con un valor de “Yes”:

    else if (formControl.parent.parent.value.retireClassLink && formControl.parent.parent.value.retireClassLink.ebBenefitValues.benvalBenefitValue === 'No') {
                    let min = +FormUtils.getControl(formControl.parent.parent, 'erppEeMinEligHrsNo').value;
                    if (+formControl.value < min) {
                        return { 'minHrs': 'Las horas no pueden ser inferiores a ' + min + '.' };
                    }
                }
    

    Esta nueva condición verifica si retireClassLink tiene un valor de “No” y, en ese caso, obtiene el valor mínimo del control de formulario erppEeMinEligHrsNo y verifica si el valor de minHours está por debajo de él. Si lo está, entonces devuelve un mensaje de error indicando que el valor no puede ser inferior al mínimo.

    Al agregar esta condición adicional al validador, se evitará que el usuario pueda guardar los cambios si el valor de minHours está por debajo del valor mínimo cuando retireClassLink está configurado en “No”.

Comments are closed.