Tengo un formulario simple que necesita validación para las entradas del usuario. Si la entrada es demasiado larga, no quiero mostrar un error: "El valor ingresado es demasiado largo. El valor máximo es {{max}}". ¿Cómo puedo pasar el valor máximo a la cadena de error dentro de mi archivo dictionary.js? Este archivo contiene todas las cadenas que uso en el formulario.
En el archivo validator.js, hago un bucle en los campos de texto que tienen un valor y, si supera el máximo, recopilo el mensaje de error en una matriz. El mensaje de error se muestra debajo del campo específico.
La solución a continuación no funciona y muestra un texto "[Objeto objeto]" debajo del campo de texto. ¿Algunas ideas?
diccionario.js
const eng = Object.freeze({ errors: { invalidLength: 'Entered value is too long. Max value is {{max}}.', required: 'Mandatory info is missing' }, ... ...validador.js
const validate = (values) => { const errors = {}; values.forEach(key => { const value = key.value; const max = key.max; if (value.length > max) { errors[key.field] = ('errors.invalidLength', {max}); } } }); return errors; }Puede transformar su objeto de errores en lo siguiente:
diccionario.js
const eng = Object.freeze({ errors: { invalidLength: (maxValue) => `Entered value is too long. Max value is ${maxValue}.`, required: 'Mandatory info is missing' } })Luego en tu validador: validator.js
if (value.length > max) { errors[key.field] = eng.errors.invalidLength(max); }Puedes intentar actualizar
const eng = Object.freeze({ errors: { invalidLength: 'Entered value is too long. Max value is {{max}}.', required: 'Mandatory info is missing' }a
const eng = Object.freeze({ errors: { invalidLength: `Entered value is too long. Max value is ${max}.`, required: 'Mandatory info is missing' }Y,
if (value.length > max) { errors[key.field] = ('errors.invalidLength', {max}); }a
if (value.length > max) { errors[key.field] = eng.errors.invalidLength; }