HarmonyOS promptAction.openCustomDialog自定义弹窗在非UI类中调用问题

在非UI class中使用打开自定义弹窗

promptAction.openCustomDialog({
  builder:
  MyGlobalBuilderFunction()
,
  onWillDismiss:(dismissDialogAction: DismissDialogAction) => {
    console.info("reason" + JSON.stringify(dismissDialogAction.reason))
    console.log("dialog onWillDismiss")
    if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
      dismissDialogAction.dismiss()
    }
    if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
      dismissDialogAction.dismiss()
    }
  }
}).then((dialogId: number) => {
  console.log('')
})

@Builder function MyGlobalBuilderFunction() {
  Column() {
    Text('弹窗').fontSize(30)
    Row({ space: 50 }) {
      Button("确认").onClick(() => {
        // promptAction.closeCustomDialog(0)
        // this.controller.open();
      })
      Button("取消").onClick(() => {
        // promptAction.closeCustomDialog(1)
      })
    }
  }.height(200).padding(5).justifyContent(FlexAlign.SpaceBetween)
}

报错:Cannot read property observeComponentCreation2 of undefined

问题和这个链接一样。

https://developer.huawei.com/consumer/cn/forum/topic/0203154980839972156

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

使用promptAction.openCustomDialog自定义弹窗,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5#promptactionopencustomdialog11

其中需要传入的参数类型为CustomDialogOptions,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5#customdialogoptions11

其中build的类型为CustomBuilder,其为用户生成的自定义组件,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-types-V5#custombuilder8

参考@Builder装饰的的文档可知,自定义构建函数分为 自定义组件内自定义构建函数 和 全局自定义构建函数,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builderparam-V5#装饰器使用说明

综合以上信息可知,promptAction.openCustomDialog打开的自定义弹窗的构建函数,只能是用户自定义组件内自定义的构建函数,如果您想使用全局自定义构建函数,可以在组件内的构造函数中引用全局构造函数,您可以参考 promptAction.openCustomDialog 文档给出的第二个示例:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5#promptactionopencustomdialog11

分享
微博
QQ
微信
回复
1天前
相关问题
promptAction.openCustomDialog 自定义弹窗
445浏览 • 1回复 待解决
promptAction.openCustomDialog 全局弹窗
630浏览 • 1回复 待解决
HarmonyOS promptAction.openCustomDialog问题
23浏览 • 1回复 待解决