vue antd的from表单中验证rules中type的坑
vue antd的from表单中验证rules中type的坑我的代码如下:<a-formref="formRef":model="detailState"layout="horizontal":labelCol="{ span: 6 }":wrapperCol="{ span: 14 }":rules="rules"><a-form-item l
·
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。
更多推荐
已为社区贡献3条内容
所有评论(0)