如果出现错误,请保留警报框而不关闭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果出现错误,请保留警报框而不关闭相关的知识,希望对你有一定的参考价值。

这只是一个带单选按钮的警告框。除了一件事,一切正常。即如果出现错误,我将无法保留警报框,直到用户输入正确的数据。根据the doc我使用了return false功能。但还没有运气。任何线索?

Note:如果输入是text boxes,这工作正常。在这里,我需要单选按钮。

const allApiKeys = await this.apiKeySqliteProvider.getAllApiKeys();
            const alert = this.alertCtrl.create();
            alert.setTitle('Select Api Key');
            forEach(allApiKeys, (apiKey: ApiKey) => {
              alert.addInput({
                type: 'radio',
                label: apiKey.name,
                value: apiKey.key,
                checked: false
              });
            });
            alert.addButton({
              text: 'Cancel',
              role: 'cancel',
              handler: data => {
                this.loading.dismissLoader(loading);
              }
            });
            alert.addButton({
              text: 'OK',
              handler: data => {
                let navTransition = alert.dismiss();
                navTransition.then(() => {
                 if (data == null) {
                    this.showToastProvider.showErrorToast("Invalid API Key");
                    this.loading.dismissLoader(loading);
                    return false;
                  } 
                });
                return false;
              }
            });
            alert.present();
          } 
答案

return false不是实际问题。你在调用alert.dismiss,这就是问题所在。如果你不想隐藏警报,你应该在dismiss块中移动else代码。

请将您的代码更改为以下内容

 const allApiKeys = await this.apiKeySqliteProvider.getAllApiKeys();
                const alert = this.alertCtrl.create();
                alert.setTitle('Select Api Key');
                forEach(allApiKeys, (apiKey: ApiKey) => {
                  alert.addInput({
                    type: 'radio',
                    label: apiKey.name,
                    value: apiKey.key,
                    checked: false
                  });
                });
                alert.addButton({
                  text: 'Cancel',
                  role: 'cancel',
                  handler: data => {
                    this.loading.dismissLoader(loading);
                  }
                });
                alert.addButton({
                  text: 'OK',
                  handler: data => {
                      if (data == null) {
                        this.showToastProvider.showErrorToast("Invalid API Key");
                        this.loading.dismissLoader(loading);
                        return false;
                      }

                      // you don't need else here as by default it will hide alert
                  }
                });
                alert.present();
              } 

以上是关于如果出现错误,请保留警报框而不关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS ACCESS 中打开定时消息框而不创建其他窗口

关闭 UIViewController 而不关闭其顶部的警报

Python Streamlit - 过滤熊猫数据框而不重新运行整个脚本

设置为 Prometheus 数据源以便在日志计数上发出警报的 Loki 配置错误,出现 404 错误 [关闭]

合并两个数据框而不重复熊猫

创建自动完成组合框和文本框而不区分结果 C#.net