vue antd的from表单中验证rules中type的坑记录
作者:柠檬柠檬子
这篇文章主要介绍了vue antd的from表单中验证rules中type的坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
vue antd的from表单验证rules中type的坑
总结在最后哟~
我的代码如下
<a-form ref="formRef" :model="detailState" layout="horizontal" :labelCol="{ span: 6 }" :wrapperCol="{ span: 14 }" :rules="rules" > <a-form-item label="分组" name="groupId"> <a-select v-model:value="detailState.groupId"> <a-select-option v-for="item in groupsList" :key="item.id" :value="item.id" >{{ item.groupName }} </a-select-option> </a-select> </a-form-item> ... </a-from>
const detailState = reactive({ groupId: "", ... }); const rules = { groupId: [ { required: true, message: "分组必填", trigger: "change", }, ], }
明明选择的里面有数据,但是还是会校验出来
报错如下
参考官网中的:
// 官网代码 <a-form-item label="Activity zone" name="region"> <a-select v-model:value="formState.region" placeholder="please select your zone"> <a-select-option value="shanghai">Zone one</a-select-option> <a-select-option value="beijing">Zone two</a-select-option> </a-select> </a-form-item>
// 官网代码 const rules = { region: [ { required: true, message: 'Please select Activity zone', trigger: 'change', }, ], ... }
感觉并没有什么区别,看到其他人用到了type,类型是array;我也就试了试:
const rules = { groupId: [ { required: true, message: "分组必填", trigger: "change", type: "array", }, ] }
但是依然报错
我想我的 groupId 定义的类型是 string ,而 type 的默认值也是string,为什么会报错呢,而看别人类似的代码,用的 array ,我把 groupId 的类型也改成数组后,还是报错。实在不理解…
虽然感觉到是一个小问题,但是自己就是尝试了很多,也看了别人的,最终没解决,最后问了大佬后,得知,这里的type
校验的是<a-select-option/>
中value
的值。
由于我得到的 item.id 是 number 类型,所以最后需要在 rules 中写的 type 为 number 即可。
const rules = { groupId: [ { required: true, message: "分组必填", trigger: "change", type: "number", }, ] }
这样就不会报错了。
总结
rules
中的type
校验的是select中得到的值,也就是value
的值,当value为字符串时,type的默认值就为string,就可以不写(官方的例子中就是这样)。
当不为string时就需要写类型,这里就用的是number。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。