FormField 表单字段

February 27, 2026 · View on GitHub

表单字段组件,自动绑定实体类字段配置,支持多种输入类型。

引入

import { AFormField } from '@airpower/web'

Props

参数说明类型默认值必填
entity实体类,传入表单内容的类型ITransformerConstructor<E>null
field字段名称string-
modelValue手动绑定的表单对象Enull
disabled是否禁用输入booleanfalse
readonly是否只读booleanfalse
disabledValue禁用时显示的值string | boolean | number | Array | Objectundefined
list可选数组(枚举)IEnum[]undefined
tree可选树结构ITree[]undefined

Emits

事件名说明回调参数
change值变化(value: E) => void
update:modelValuev-model 更新(value: E) => void
blur失焦() => void
focus聚焦() => void
clear清空() => void

Slots

插槽名说明作用域参数
default自定义输入组件,默认使用 AInput-

示例

<template>
  <!-- 基础用法 -->
  <AFormField 
    :entity="User" 
    field="username" 
  />

  <!-- 手动绑定表单 -->
  <AFormField 
    v-model="formData"
    :entity="User" 
    field="username" 
  />

  <!-- 禁用状态 -->
  <AFormField 
    :entity="User" 
    field="status"
    disabled
    :disabled-value="1"
  />

  <!-- 使用枚举 -->
  <AFormField 
    :entity="User" 
    field="role"
    :list="roleList"
  />

  <!-- 使用树形选择 -->
  <AFormField 
    :entity="User" 
    field="departmentId"
    :tree="departmentTree"
  />

  <!-- 自定义输入组件 -->
  <AFormField 
    :entity="User" 
    field="description"
  >
    <ElInput 
      v-model="formData.description"
      type="textarea"
    />
  </AFormField>
</template>

<script setup lang="ts">
import { User } from '@/model/User'

const formData = ref(new User())
const roleList = ref([...])
const departmentTree = ref([...])
</script>

注意事项

  • 必须传入 field 参数
  • 需要配合 useEditor 创建的表单对象使用,或手动传入 entitymodelValue
  • 会自动读取实体类上的 @Field@Form 装饰器配置
  • 支持所有 AInput 的功能和配置