Form 表单
具有数据收集、校验和提交功能的表单,包含复选框、单选框、输入框、下拉选择框等元素。
何时使用
需要进行数据收集、数据校验、数据提交功能时。
基础用法
表单样式
大小:
对齐方式:
垂直排列
多列表单
尺寸控制
尺寸:
表单校验
Form 参数
参数名 | 类型 | 默认值 | 说明 | 跳转 demo |
---|---|---|---|---|
data | object | {} | 必选,表单数据 | 基础用法 |
layout | Layout | 'horizontal' | 可选,设置表单的排列方式 | 垂直排列 |
label-size | LabelSize | 'md' | 可选,设置 label 的宽度,默认为 100px,sm 对应 80px,lg 对应 150px | 表单样式 |
label-align | LabelAlign | 'start' | 可选,设置水平布局方式下,label 对齐方式 | 表单样式 |
rules | FormRules | -- | 可选,设置表单的校验规则 | 表单校验 |
message-type | MessageType | 'popover' | 可选,设置校验信息的提示方式 | |
pop-position | PopPosition | ['right','bottom'] | 可选,消息显示为 popover 时,popover 弹出方向 | |
validate-on-rule-change | boolean | false | 可选,是否在 rules 改变后立即触发一次验证 | |
show-feedback | boolean | false | 可选,是否展示校验结果反馈图标 | |
disabled | boolean | false | 可选,是否禁用该表单内的所有组件。 | |
size | FormSize | -- | 可选,用于控制该表单内组件的尺寸 | |
hide-required-mark | boolean | false | 可选,是否隐藏所有表单项的必选标记 | |
style-type | StyleType | 'default' | 可选,设置表单为灰色表单 | |
append-to-body-scroll-strategy | AppendToBodyScrollStrategy | 'reposition' | 可选,消息显示为 popover 时,滚动时 popover 处理策略,默认策略跟随宿主移动;close 为滚动时关闭 | |
require-position | string | 'left' | 可选,必填型号的位置,可选值为left 和right |
Form 事件
事件名 | 回调参数 | 说明 |
---|---|---|
validate | Function(field: string, isValid: boolean, message: string) => void | 表单项被校验后触发 |
Form 方法
方法名 | 类型 | 说明 | 跳转 Demo |
---|---|---|---|
validate | (callback?: FormValidateCallback) => Promise | 表单校验函数 | 表单校验 |
validateFields | (fields: string[], callback?: FormValidateCallback) => Promise | 校验指定字段 | |
resetFields | (fields: string[]) => void | 重置表单项的值,并移除校验结果 | |
clearValidate | (fields: string[]) => void | 清除校验结果,参数为需要清除的表单项field ,默认清除全部 |
Form 插槽
插槽名 | 说明 |
---|---|
default | 包裹整个表单内容 |
FormItem 参数
参数名 | 类型 | 默认值 | 说明 | 跳转 demo |
---|---|---|---|---|
label | string | '' | 可选,表单项的名称 | 基础用法 |
field | string | '' | 可选,指定验证表单需验证的字段,验证表单时必选该属性 | 基础用法 |
required | boolean | false | 可选,表单选项是否必填 | |
rules | FormRuleItem | FormRuleItem[] | -- | 可选,表单项的校验规则 | 表单校验 |
message-type | MessageType | -- | 可选,用法同父组件message-type 参数,优先级高于父组件,默认继承父组件的值 | |
pop-position | PopPosition | -- | 可选,用法同父组件pop-position 参数,优先级高于父组件,默认继承父组件的值 | |
show-feedback | boolean | -- | 可选,是否展示校验结果反馈图标,优先级高于父组件,默认继承父组件的值 | |
help-tips | string | helptips | '' | 可选,表单项帮助指引提示内容,空字符串表示不设置提示内容。可传入对象类型的参数来自定义提示内容的样式、展开方向等 | 基础用法 |
extra-info | string | '' | 可选,附件信息,一般用于补充表单选项的说明 | 基础用法 |
feedback-status | FeedbackStatus | -- | 可选,手动指定当前 control 状态反馈 |
FormItem 方法
方法名 | 类型 | 说明 |
---|---|---|
resetField | () => void | 重置表单项的值,并移除校验结果 |
clearValidate | () => void | 清除校验结果 |
validate | (trigger: string) => Promise | 表单校验函数 |
FormItem 插槽
插槽名 | 说明 |
---|---|
default | 包裹单个表单项的输入控件 |
label | 标签位置显示的内容 |
extraInfo | 自定义表单项额外信息 |
Form 类型定义
Layout
type Layout = 'horizontal' | 'vertical';
LabelSize
type LabelSize = 'sm' | 'md' | 'lg';
LabelAlign
type LabelAlign = 'start' | 'center' | 'end';
FormRules
type FormRules = Partial<Record<string, Array<FormRuleItem>>>;
MessageType
type MessageType = 'popover' | 'text' | 'none';
PopPosition
type PopPosition =
| 'top'
| 'right'
| 'bottom'
| 'left'
| 'top-start'
| 'top-end'
| 'right-start'
| 'right-end'
| 'bottom-start'
| 'bottom-end'
| 'left-start'
| 'left-end';
FormSize
type FormSize = 'sm' | 'md' | 'lg';
FormValidateCallback
ValidateFieldsError
类型参考async-validator。
type FormValidateCallback = (isValid: boolean, invalidFields?: ValidateFieldsError) => void;
StyleType
type StyleType = 'default' | 'gray';
AppendToBodyScrollStrategy
type AppendToBodyScrollStrategy = 'close' | 'reposition';
FormItem 类型定义
FormRuleItem
RuleItem
类型参考async-validator。
interface FormRuleItem extends RuleItem {
trigger?: Array<string>;
}
FeedbackStatus
type FeedbackStatus = 'success' | 'error' | 'pending';
HelpTips
interface HelpTips {
content: string; // 提示内容
position?: PopPosition[]; // 展开方向
trigger?: 'hover' | 'click'; // 触发方式
popType?: string; // 提示类型
}