news 2026/5/28 2:27:23

详细分析 Vue2 中的 a-form-item基本知识(附Demo)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
详细分析 Vue2 中的 a-form-item基本知识(附Demo)

目录

  • 前言
  • 1. 基本知识
  • 2. Demo
  • 3. 实战

前言

Java基本知识:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)

奔着从实战中出发剖析基本知识

1. 基本知识

a-form-item 是 Ant Design Vue 表单组件 中用于:

  • 给控件加 label(标签)

  • 设置 label 和表单控件的布局(labelCol、wrapperCol)

  • 处理验证状态(success/error/warning 等)

  • 配合 v-decorator 来实现 表单数据管理 + 校验

常用属性(最重要)

属性说明
label表单项左侧标题
labelCollabel 的布局(栅格宽度)
wrapperCol控件区域布局
help自定义帮助信息
validateStatus验证状态:success / warning / error / validating
required是否标记为必填(只显示红 *,不代表校验规则)
extra额外说明文字

简易的例子

<a-form-itemlabel="用户名":labelCol="{ span: 5 }":wrapperCol="{ span: 16 }"validateStatus="error"help="用户名不能为空">

2. Demo

常用的Demo写法如下

输入用户名、手机号
校验必填 + 正则
提交收集数据
自动显示错误提示

<template><a-form:form="form"@submit.prevent="handleSubmit"><!-- 用户名 --><a-form-itemlabel="用户名":labelCol="labelCol":wrapperCol="wrapperCol"><a-inputplaceholder="请输入用户名"v-decorator="['username', { rules: [ { required: true, message:'用户名不能为空'}, { min: 3, message:'至少 3 个字符'} ] } ]"/></a-form-item><!-- 手机号 --><a-form-itemlabel="手机号":labelCol="labelCol":wrapperCol="wrapperCol"><a-inputplaceholder="请输入手机号"v-decorator="['mobile', { rules: [ { required: true, message:'请输入手机号'}, { pattern: /^1\d{10}$/, message:'手机号格式不正确'} ] } ]"/></a-form-item><!-- 提交按钮 --><a-form-item:wrapperCol="{ span: 16, offset: 5 }"><a-buttontype="primary"html-type="submit":loading="loading">提交</a-button></a-form-item></a-form></template><script>exportdefault{name:"UserFormDemo",beforeCreate(){this.form=this.$form.createForm(this);// 必须创建 form},data(){return{loading:false,// label 和控件 的布局labelCol:{span:5},wrapperCol:{span:16},};},methods:{handleSubmit(){this.form.validateFields((err,values)=>{if(!err){console.log("提交的数据:",values);this.$message.success("提交成功!");}});}}};</script><stylescoped></style>

🧩 结构分析(核心写法)
1️⃣ 绑定 form

beforeCreate(){this.form=this.$form.createForm(this);}

👉 这是 AntD Vue2 的黑科技,必须写。

2️⃣ 使用表单布局(labelCol & wrapperCol)

labelCol:{span:5},wrapperCol:{span:16},

让 label 占 5 列,控件占 16 列。

3️⃣ v-decorator 管理字段 + 校验规则

标准语法:v-decorator="['字段名', 配置规则]"

示例:

v-decorator="['username',{rules:[{required:true,message:'不能为空'}]}]"

4️⃣ 提交表单统一校验

this.form.validateFields((err,values)=>{if(!err){console.log(values)}})

⚡ 不需要手写错误提示,a-form-item 会自动显示

3. 实战

项目中实战的代码模块经典结构如下:

<a-form-itemlabel="用户姓名":labelCol="labelCol":wrapperCol="wrapperCol"><a-inputplaceholder="请输入用户姓名"v-decorator.trim="['username', validatorRules.username]"/></a-form-item>

Demo 使用的是:

labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }
  • 在小屏:label 和控件都占 24 列(换行)

  • 在大屏:label 占 5,内容占 16(共 24 栅格)

👉 这是 AntD 的 响应式栅格布局方式

validatorRules.username(校验规则示例)

代码里面是:

username: { rules: [ { required: true, message: '请输入用户名称!' } ] }

常见校验如下:

规则示例
required{ required: true }
min/max 长度{ min: 3, max: 20 }
正则 pattern{ pattern: /^[A-Za-z]+$/ }
自定义校验{ validator: this.myValidator }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 5:26:43

插件分享:将AI生成的数学公式无损导出为Word文档

对于经常使用DeepSeek、豆包等AI工具处理技术内容的小伙伴&#xff0c;一个常见的困扰是&#xff1a;生成的回答中包含的数学公式&#xff0c;复制到Word后往往变成难以编辑的代码或模糊图片&#xff0c;手动调整耗时费力。 本文将介绍解决此问题的技术方案和插件&#xff0c;…

作者头像 李华
网站建设 2026/5/26 7:20:37

Ubuntu 22.04 开发环境 CA 证书签发完整笔记(完整版)

Ubuntu 22.04 开发环境 CA 证书签发完整笔记 开发环境 前端: Vue3+TS+Vite+ESM 后端:NestJS 数据库:MySQL+Redis 虚拟机OS:Ubuntu 22.04 LTS 工作拓扑 开发环境参数(VS Code) 版本: 1.106.3 (Universal) Electron: 37.7.0 ElectronBuildId: 12781156 Chromium: 138.0.72…

作者头像 李华
网站建设 2026/5/27 13:16:38

Janus-Pro-1B终极指南:快速构建下一代多模态AI应用

Janus-Pro-1B是DeepSeek推出的革命性多模态模型&#xff0c;以其创新的视觉编码解耦架构重新定义了AI的理解与生成能力边界。这款仅需10亿参数的轻量级模型在图像生成与视觉理解任务上实现了对行业巨头的性能超越&#xff0c;为开发者提供了前所未有的技术接入门槛。 【免费下载…

作者头像 李华
网站建设 2026/5/27 23:46:17

手把手教你用JS正则表达式,轻松实现密码强度分步校验

在构建前端登录或注册功能时&#xff0c;密码强度的校验是保障用户账户安全的第一道防线。JavaScript正则表达式为此提供了高效、灵活的验证手段。本文将结合实际开发场景&#xff0c;探讨如何设计正则表达式来匹配符合常见安全策略的密码。 密码强度校验需要哪些核心规则 一个…

作者头像 李华
网站建设 2026/5/27 22:23:09

SenseVoice终极指南:快速掌握多语言音频理解核心技术

SenseVoice终极指南&#xff1a;快速掌握多语言音频理解核心技术 【免费下载链接】SenseVoice Multilingual Voice Understanding Model 项目地址: https://gitcode.com/gh_mirrors/se/SenseVoice SenseVoice是一个革命性的多语言音频理解基础模型&#xff0c;集成了语音…

作者头像 李华
网站建设 2026/5/25 19:15:48

C++、Qt中打开文件夹获取文件

void Qt_operateping::onOpenFileClicked() {// 打开文件对话框&#xff0c;供用户选择图片文件// getOpenFileName() 函数的四个参数依次是&#xff1a;// 1. 父组件&#xff0c;通常传递当前对象 this// 2. 对话框标题// 3. 初始打开的文件路径&#xff08;此处是 D 盘根目录…

作者头像 李华