vueantd的from表单中验证rules中type的坑记录
短信预约 -IT技能 免费直播动态提醒
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。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341