decorator.md

September 19, 2025 · View on GitHub

返回文档首页

内置装饰器

AirPower-Web 提供了多种装饰器来简化开发,通过元数据的方式定义模型字段在不同场景下的表现形式。

@Model

@Model 装饰器用于定义模型的基本信息。


@Model({
    name: '用户',
    api: '/user'
})
export class User extends RootEntity {
    // ...
}

@Field

@Field 装饰器用于定义字段的基本信息。

export class User extends RootEntity {
    @Field({
        label: '用户名',
        summary: '用户登录名',
        placeholder: '请输入用户名'
    })
    username!: string

    @Field({
        label: '年龄',
        min: 0,
        max: 150
    })
    age!: number
}

@Form

@Form 装饰器用于定义字段在表单中的表现形式。

export class User extends RootEntity {
    @Field({
        label: '用户名'
    })
    @Form({
        required: true,
    })
    username!: string

    @Field({
        label: '邮箱'
    })
    @Form({
        email: true,
        required: true,
    })
    email!: string
}

@Table

@Table 装饰器用于定义字段在表格中的表现形式。

export class User extends RootEntity {
    @Field({
        label: '用户名'
    })
    @Table({
        width: 150,
        align: 'center'
    })
    username!: string

    @Field({
        label: '状态'
    })
    @Table({
        enum: UserStatusEnum
    })
    status!: number
}

@Search 装饰器用于定义字段在搜索表单中的表现形式。

export class User extends RootEntity {
    @Field({
        label: '用户名'
    })
    @Search({
        order: 1,
        col: 6
    })
    username!: string

    @Field({
        label: '注册时间'
    })
    @Search({
        type: 'datetime',
        order: 2,
        col: 6
    })
    createdAt!: Date
}

装饰器组合使用

同一个字段可以同时使用多个装饰器,分别定义在不同场景下的表现形式:

export class User extends RootEntity {
    @Field({
        label: '用户名',
        placeholder: '请输入用户名'
    })
    @Form({
        required: true,
        col: 12,
        order: 1
    })
    @Table({
        width: 150,
        sortable: true
    })
    @Search({
        order: 1,
        col: 6
    })
    username!: string
}

装饰器配置项

@Field 配置项

属性类型说明
labelstring字段显示名称
summarystring字段摘要说明
placeholderstring占位符文本
minnumber最小值
maxnumber最大值
dictionaryIWebEnum[]字典枚举

@Form 配置项

属性类型说明
requiredboolean是否必填
colnumber表单栅格占据的列数(1-24)
ordernumber表单字段排序
typestring表单控件类型
showboolean/function是否显示该字段
disabledboolean/function是否禁用

@Table 配置项

属性类型说明
widthnumber/string列宽度
sortableboolean是否可排序
alignstring对齐方式(left/center/right)
typestring列类型(text/enum/date/datetime/money/phone/image)
showboolean/function是否显示该列
fixedboolean/string是否固定列

@Search 配置项

属性类型说明
ordernumber搜索字段排序
colnumber搜索表单栅格占据的列数(1-24)
typestring搜索控件类型
showboolean/function是否显示该字段
disabledboolean/function是否禁用