项目需要国际化处理,发现一个问题:当切换语言时表单验证的提示信息没有同时更新过来
在这里插入图片描述
看了一些解决方案,可以把rules放到computed里,但是这样切换语言会导致整个表单重新验证,而我只想把已经提示错误信息的几个表单项改变提示语言,

解决方案:

不使用message传入错误提示 ,手动传入验证规则

let validateCode = (rule, value, callback) => {
	if (!value) {
		return callback(new Error(this.$t('common.validateCode')))
	} else {
		 return callback()
	}
};
rules: {
	code: [
		{validator: validateCode, trigger: 'blur'}
	]
}

监听i18n,切换语言时查找已经提示错误的表动项,手动触发验证

watch:{
            "$i18n.locale": function () {
                this.$refs['form'].fields.forEach(item => {
                    if(item.validateState === 'error'){
                        this.$refs['form'].validateField(item.labelFor)
                    }
                })
            }
        },
Logo

前往低代码交流专区

更多推荐