表单容器
表单容器是最重要的组件之一,常用于业务表单、数据筛选等。它负责组织表单项的布局、收集和校验表单数据、提交数据等。
功能演示
添加表单项
给表单容器添加表单项有两种方式:从右侧配置栏点击添加表单项、从顶部组件库选取表单控件。
如果从顶部组件库拖入非表单类组件,会弹出“组件类型不匹配”。因为表单容器虽然有像自定义容器一样的功能,但是其子组件应该是表单控件。如果需要加入自定义内容,需要通过表单里的自定义内容项来添加。

表单类型
表单有普通表单和查询表单两种类型,查询表单适合用来做数据筛选。

相比普通表单,查询表单有如下特点:
- 表单项水平布局,自动换行
- 支持展开、收起表单项
特别注意:在已经有表单项时切换表单类型,界面不会立即刷新,需要增删一下表单项或者开关一下“动态设置表单项”。后续新版本中会对这个问题进行优化。
表单项布局
- 类型:这一项用来控制表单项Label与控件的布局方式:水平或垂直
- 每行列数:可以设置每行几个表单项
- 列间距:每行多列时,列之间的距离
表单项配置
选中每个表单项都可以对其进行配置,如标题、字段名称、后置插槽、校验规则等。
另外,不同的表单项还有一些独特的配置,比如数字输入框可以进行小数精度控制、千分位等;文本框可以限制文字长度等。
动态设置表单项
这是对整个表单的控制,如果打开这个选项,就可以通过逻辑连线连接到表单容器,将新的表单项配置完整数据传给表单。此时表单的表单项组成完全由传入的数据决定。

控件选择
给表单容器传入新的表单项数据时,如何为表单项选择要使用的控件呢?比如输入框、下拉框。
应该用relOriginField字段:它指向哪个字段,就用那个字段的控件

比如下图中的配置, 当姓名值变化时整个表单就会变成只有一个表单项:test,该项使用了age字段的控件——数字输入框

自定义校验规则
每个表单项都可以在校验规则部分选择已有的规则,也可选择自定义校验规则。自定义校验规则的执行靠「JS计算」组件来实现,无论校验逻辑如何,最终JS计算都应该返回一个对象:
{
validateStatus: value ? "success": 'error',
help: !value? "内容不能为空" : ''
}
比如我们给姓名字段一个自定义校验规则:必填而且长度大于2,整体流程如下:
JS计算组件的输出要连接到姓名输入框,进行“设置校验结果”
JS计算组件的配置如下:
({ outputs, inputs, logger }) => {
const [ inputValue0 ] = inputs;
const [ output0 ] = outputs;
const isEmpty = !inputValue0;
const tooShort = inputValue0.length <= 2;
output0({
validateStatus: !isEmpty && !tooShort ? "success": 'error',
help: isEmpty ? "内容不能为空" : tooShort ? "长度必须大于2" : ''
});
}
完整配置
表单容器
| 属性名称 | 说明 |
|---|---|
| 类型 | 普通表单、查询表单 |
| 默认折叠表单项 | 查询表单可用,折叠超出范围的表单项,可以手动展开或收起 |
| 提交隐藏表单项字段 | 提交时收集被隐藏的表单项字段,默认不收集被隐藏的表单项字段 |
| 动态设置表单项 | 开启后可以用JS控制整个表单的表单项结构 |
| 自动滚动到错误位置 | 开启后,在校验失败时触发 |
表单项布局
| 属性名称 | 说明 |
|---|---|
| 类型 | 表单项Lable与空间的位置:水平或垂直 |
| 启用24栅格布局系统 | 默认开启,此时可设置表单项宽度和列间距;如果关闭,则需要设置每行列数 |
| 尺寸 | 默认、小、大 |
移动端配置
| 属性名称 | 说明 |
|---|---|
| 宽度适配 | 表单布局为水平下生效,默认开启,antd内置样式会使标题和表单项内容展示为两行;关闭后,水平模式下,展示成一行 |
标题
用来控制表单项的Label
| 属性名称 | 说明 |
|---|---|
| 宽度类型 | 固定像素、24栅格 |
| 标题超长配置 | 超长省略、自动换行、默认 |
| 显示冒号 | 是或否 |
事件
| 属性名称 | 说明 |
|---|---|
| 字段值更新 | 任意字段值变化时触发 |