首页 > 解决方案 > 我的 `Buttonhandler` 总是导致这个错误,我不知道如何解决它

问题描述

好吧,所以我有一个离子选择器,我给了它一个完成按钮,它读取选定的值并将其保存在一个数组中。整个事情没有问题,但是当我编译它时它总是导致显示这个错误:

"error TS2322: Type '() => Promise<void>' is not assignable to type 
'(value: any) => boolean | void'.
Type 'Promise<void>' is not assignable to type 'boolean | void'.
Type 'Promise<void>' is not assignable to type 'void'."

这不是一个真正的问题,因为该错误仅在我编译它时出现并且不会造成任何真正的损害,但我仍然希望它能够得到解决。

我尝试了很多方法来解决问题,但是没有什么能让错误消失而不破坏处理程序的功能。(如下图)

{
     text: 'Done',
     role: 'confirm',
     handler: async () => {
         const vari = await this.picker.getColumn(this.pickervalues[id].name);
         this.selectedvalue = vari.options[vari.selectedIndex].text;
         this.selected[id] = this.selectedvalue;
     }
}

任何人都知道如何摆脱这个错误?

标签: ionic-frameworkionic4

解决方案


您可以使用then而不是 async/awiat:

{
  text: 'Done',
  role: 'confirm',
  handler: () => {
    this.picker.getColumn(this.pickervalues[id].name).then(() => {
      this.selectedvalue = vari.options[vari.selectedIndex].text;
      this.selected[id] = this.selectedvalue;
    });
  }
}

请参阅此Github 问题 以获取更多参考。


推荐阅读