# FormComponent (系统接口)
提供卡片组件,实现卡片的显示功能。
> **说明:**
>
> - 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
>
> - 该组件为卡片组件的使用方,对应提供方的使用参考文档[JS服务卡片UI组件](../js-service-widget-ui/js-service-widget-file.md)。
>
> - 该组件使用需要具有系统签名。
>
> - 本模块为系统接口。
## 权限
ohos.permission.REQUIRE_FORM, ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
## 子组件
无
## 接口
FormComponent (value: FormInfo)
创建卡片组件,用于显示提供的卡片。
**参数:**
| 参数名 | 参数类型 | 必填 | 参数描述 |
| --------- | ------------------------------- | ---- | ----------------------------------------------------------------------- |
| value | [FormInfo](#forminfo12) | 是 | 卡片信息。 |
## FormInfo12+
卡片信息。
| 参数名 | 参数类型 | 必填 | 参数描述 |
| --------- | ------------------------------- | ---- |-------|
| id | number \| string | 是 | 卡片标识(新建卡片填0)。
**说明:**
不同使用方不可使用相同id。
同一使用方使用相同id时,显示后添加的卡片。 |
| name | string | 是 | 卡片名称。 |
| bundle | string | 是 | 目标卡片包名。 |
| ability | string | 是 | 目标卡片Ability名称。 |
| module | string | 是 | 卡片模块名称。 |
| dimension | [FormDimension](#formdimension) | 否 | 卡片尺寸,支持2 * 2,4 * 4,4 * 2类型卡片。
默认值:Dimension_2_2。 |
| temporary | boolean | 否 | 卡片是否为临时卡片。 |
| renderingMode | [FormRenderingMode](#formrenderingmode11) | 否 | 卡片渲染模式。取值如下,默认值为 FULL_COLOR。
- FULL_COLOR:代表全色模式,卡片框架不会对卡片效果做出修改,保持和卡片开发者设置的效果不变。
- SINGLE_COLOR:代表单色模式,卡片框架会把卡片背景设为透明,开发者需按最佳实践设置卡片风格。
**说明:**
如果系统不支持统一渲染模式,卡片框架在单色模式下也不会把卡片背景设为透明。 |
## FormCallbackInfo12+
卡片查询或者卸载时获取formId的参数。
| 参数名 | 参数类型 | 必填 | 参数描述 |
| --------- | ------------------------------- | ---- | ----------------------------------------------------------------------- |
| id | number | 是 | 卡片标识(number类型)。
**说明:**
如果获取到的id为-1,说明id大于等于2^53,需要使用idString获取。 |
| idString | string | 是 | 卡片标识(string类型)。
|
## FormDimension
| 名称 | 描述 |
| -------------------------- | -------- |
| Dimension_1_2 | 1*2 卡片 |
| Dimension_2_2 | 2*2 卡片 |
| Dimension_2_4 | 2*4 卡片 |
| Dimension_4_4 | 4*4 卡片 |
| Dimension_2_19+ | 2*1 卡片 |
| Dimension_1_111+ | 1*1 卡片 |
| Dimension_6_412+ | 6*4 卡片 |
| Dimension_2_314+ | 2*3 卡片为穿戴设备使用 |
| Dimension_3_314+ | 3*3 卡片为穿戴设备使用 |
## FormRenderingMode11+
| 名称 | 描述 |
| -------------------------- | -------- |
| FULL_COLOR | 全色模式。|
| SINGLE_COLOR | 单色模式。|
## 属性
### size
size(value: { width: number; height: number })
设置高宽尺寸。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | --------------------------------------------------------- | ---- | ---------- |
| value | {
width?: number,
height?: number
} | 是 | 宽高尺寸。 |
### moduleName
moduleName(value: string)
设置卡片模块名称。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------- |
| value | string | 是 | 卡片模块名称。 |
### dimension
dimension(value: FormDimension)
设置卡片尺寸,支持2 * 2,4 * 4,4 * 2类型卡片。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------------------------------- | ---- | ------------------------------------ |
| value | [FormDimension](#formdimension) | 是 | 卡片尺寸。
默认值:Dimension_2_2 |
### allowUpdate
allowUpdate(value: boolean)
设置是否允许卡片更新。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------- | ---- | ----------------------------------- |
| value | boolean | 是 | 是否允许卡片更新。
默认值:true |
### visibility
visibility(value: Visibility)
设置是否允许卡片可见。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | --------------------------------------------- | ---- | -------------------------------------- |
| value | [Visibility](ts-appendix-enums.md#visibility) | 是 | 是否允许卡片可见。
默认值:Visible |
## 事件
### onAcquired
onAcquired(callback: Callback[\](#formcallbackinfo12)): FormComponentAttribute
获取到卡片后触发,返回卡片的id。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------------------- | ---- | ---------- |
| Callback | [FormCallbackInfo](#formcallbackinfo12) | 是 | 卡片的id。 |
### onError
onError(callback: (info: { errcode: number; msg: string }) => void)
组件加载错误回调。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------------------------------------------------------------ | ---- | ----------------------------------------------- |
| info | { errcode: number, msg: string } | 是 | errcode: 错误码。
msg: 错误信息。 |
### onRouter
onRouter(callback: (info: any) => void)
组件路由事件回调,返回[routerEvent](../js-service-widget-ui/js-service-widget-syntax-hml.md#事件绑定)中的信息。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ---- | ---- | ------------------------------------------------------------ |
| info | any | 是 | [routerEvent](../js-service-widget-ui/js-service-widget-syntax-hml.md#事件绑定)中的信息。 |
### onUninstall
onUninstall(callback: Callback[\](#formcallbackinfo12)): FormComponentAttribute
组件卸载回调,返回卸载卡片的id。
**系统接口:** 此接口为系统接口。
**系统能力:** SystemCapability.ArkUI.ArkUI.Full
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ----------------------------------- | ---- | ---------- |
| Callback | [FormCallbackInfo](#formcallbackinfo12) | 是 | 卡片的id。 |
## 示例
卡片示例。
该示例创建一张2 * 2尺寸大小的卡片,并注册事件回调。
```ts
//card.ets
@Entry
@Component
struct CardExample {
@State formId:string = '0';
build() {
Column() {
Text('this is a card')
.fontSize(50)
.fontWeight(FontWeight.Bold)
FormComponent({
id:this.formId,
name:"Form1",
bundle:"com.example.cardexample",
ability:"FormAbility",
module:"entry",
dimension:FormDimension.Dimension_2_2,
temporary:false
})
.allowUpdate(true)
.size({width:360,height:360})
.visibility(Visibility.Visible)
.onAcquired((form: FormCallbackInfo)=>{
console.log(`form info : ${JSON.stringify(form)}`);
// Invalid form id
if (form.id == -1) {
this.formId = form.idString;
} else {
this.formId = form.id.toString();
}
})
.onError((err)=>{
console.log(`fail to add form, err: ${JSON.stringify(err)}`);
})
.onUninstall((form: FormCallbackInfo)=>{
console.log(`uninstall form success : ${JSON.stringify(form)}`);
// Invalid form id
if (form.id == -1) {
this.formId = form.idString;
} else {
this.formId = form.id.toString();
}
})
}
.width('100%')
.height('100%')
}
}
```
