校验规则
注意
推荐使用 FormCreate 内置的全新验证引擎进行表单验证,表单校验(新版)
验证规则说明
表单项校验触发时机与规则类型
表单项校验触发时机:
ts
type IFormTrigger = 'change' | 'blur'校验规则对象 IFormRules 与 Form 内部传入校验函数的 rule 类型 IFormInnerRule 定义如下:
ts
interface IFormRules {
required?: boolean // 是否必填
message?: string // 校验错误的提示
// 内置的类型校验
type?:
| 'date'
| 'dateTime'
| 'float'
| 'array'
| 'string'
| 'number'
| 'url'
| 'time'
| 'email'
| 'object'
| 'boolean'
| 'enum'
// 校验触发时机,默认为 ['change', 'blur'] 两种场景都触发;若仅在主动调用校验方式时触发,可设置为空数组 []
trigger?: IFormTrigger | IFormTrigger[]
// 同步校验函数,调用回调传递错误信息
validator?: (
rule: IFormInnerRule, // form 内部处理后的 rule
value: any, // 表单 model 对应的值,根据表单项 prop 获取
callback: (e: Error) => void,
data: object, // prop 和 value 构造的对象
options: object // 校验配置,一般不需要用到
) => void
// 异步校验函数,resolve 则表示校验成功,reject 表示校验失败
asyncValidator?: (
rule: IFormInnerRule,
value: any,
callback: (e: Error) => void,
data: object,
options: object
) => Promise<any>
}
interface IFormInnerRule {
field: string // 表单项 prop
fullField: string // 表单项完整 prop(嵌套校验时有用)
type: string // 内部使用
}同步/异步校验里成功时需调用
callback(具体签名以实现为准);失败时通过callback传入Error,与 async-validator 用法一致。
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| required | 是否必填 | boolean | false |
| message | 校验错误的提示文案 | string | - |
| type | 内置类型校验,须与组件 value 类型一致 | 'date' | 'dateTime' | 'float' | 'array' | 'string' | 'number' | 'url' | 'time' | 'email' | 'object' | 'boolean' | 'enum' | 'string' |
| trigger | 校验触发时机;默认 change 与 blur 均触发;仅在主动调用校验时触发可设为 [] | IFormTrigger | IFormTrigger[] | ['change', 'blur'] |
| validator | 同步自定义校验,rule 为 IFormInnerRule | (rule, value, callback, data, options) => void | - |
| asyncValidator | 异步自定义校验,resolve 成功,reject 失败 | (rule, value, callback, data, options) => Promise<any> | - |
| enum | 枚举类型(async-validator) | string | string[] | - |
| len | 字段长度 | number | - |
| max | 最大长度 | number | - |
| min | 最小长度 | number | - |
| pattern | 正则表达式校验 | RegExp | string | - |
| transform | 校验前转换字段值 | (value) => transformedValue | - |
| whitespace | 必选时,空格是否会被视为错误 | boolean | false |
注意
pattern类型为string时,前后不能包含/符号,否则会导致正则表达式无效type必须与组件的 value 数据类型严格一致,否则无法按预期完成数据校验- 自定义校验(
validator/asyncValidator)无论成功或失败,都应按约定执行callback;失败时传入Error - 自定义校验中可通过
this.rule和this.api获取组件和表单的相关信息
更多高级用法可研究 async-validator。


