明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
随笔 - 1277, 文章 - 0, 评论 - 214, 阅读 - 320万
  博客园  :: 首页  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

vue3 antd 报错:please transfer a valid name path to form item

Posted on   且行且思  阅读(130)  评论(0编辑  收藏  举报

在使用antd时多层嵌套循环表单时校验会报如下错误:please transfer a valid name path to form item
原因:是循环体和字段无法绑定
解决1如下:

  <a-form>
   <div v-for="(item, index) in form.List" :key="index">
       <a-form-item :name="['List',index,'userList',i,'name']" v-for="(ject, i) in item.userList" :key="i" :rules="[{ required: true, message: '必填' }]">
          <a-input v-model:value="ject.name" />
       </a-form-item>
    <div>
  </a-form>

嵌套表单校验可以这么理解:List[index].userList[i].name

 

原因:你的formItem的name属性没有和数据输入(input)框关联起来,导致表单规则校验一直报错

解决方法2:

因为出现这种场景很多,所以这里提供几个注意事项,大家可以依次检查一下。

1.检查formItem的name属性名称是否和输入框value值一致

再循环中使用form时,name规则如下:(注意一下相同颜色部分一定要对应),要不然构建的dom树不能对应起来

 

复制代码
<a-form
    ref="formRef"
    :model="dynamicValidateForm"
    @finish="onFinish"
  >
    <a-space
      v-for="(user, index) in dynamicValidateForm.users"
      :key="user.id"
      align="baseline"
    >
      <a-form-item
        :name="['users', index, 'first']"
        :rules="{ required: true,  message: 'Missing first name' }"
      >
        <a-input v-model:value="user.first" placeholder="First Name" />
      </a-form-item>
    </a-space>
  </a-form>
复制代码

 

(注意一下相同颜色部分一定要对应) 或

复制代码
<div v-for="(users, index) in formData.list" class="form-div">
          <Row :gutter="26">
            <Col :span="5">
              <FormItem
                :name="['List',index,'userList','temqProjectid']"
                :rules="[{ required: true, message: '请选择类别', trigger: 'change' }]"
              >
                <Select
                  v-model:value="users.temqProjectid"
                  :options="showCityList(users.temqProjectid)"
                  :showSearch="true"
                  optionFilterProp="label"
                  style="width: 120px"
                  :dropdownMatchSelectWidth="120"
                  allow-clear
                  placeholder="选择类别"
                />
              </FormItem>
            </Col>
            <Col :span="3">
              <FormItem
                :name="['List',index,'userList','temqSpecial']"
                :rules="{ required: true, message: '输入分配额' }"
              >
                <Input
                  v-model:value="users.temqSpecial"
                  placeholder="输入分配额"
                  allow-clear
                  style="width:70px;"
                />
              </FormItem>
            </Col>

          </Row>
        </div>
复制代码

 

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2013-11-12 SQL2005 : 如何在SQL Server Profiler (事件查看器)中 跟踪查看死锁恢复
点击右上角即可分享
微信分享提示