gpt4 book ai didi

angular - Ionic v4 - 检查模态是否打开

转载 作者:行者123 更新时间:2023-12-03 20:21:19 25 4
gpt4 key购买 nike

基本上我有带有 2 个按钮的欢迎页面;登录并注册。当用户单击“注册”按钮时,会打开一个显示注册表单的模式。我实现了一个在注册时登录用户的逻辑,还有一个在他/她通过身份验证时将用户带到主页的逻辑。

这意味着当用户提交注册表并登录时,模式必须被关闭,但是仅限 主页显示后。否则,如果我在此之前关闭模式,那么用户将再次看到欢迎屏幕,我想避免这种行为。我可以在注册时轻松关闭模式,但正如我所说,我不希望用户再次看到欢迎屏幕。

这就是我在 中打开模式的方式欢迎.ts

async showModal() {
const modal = await this.modalController.create({
component: RegisterPage
});
return modal.present();
}

注册.ts ,我需要一种方法来知道模态是否仍处于打开状态,以便我可以使用以下逻辑:
constructor(
private modalController: ModalController,
private router: Router
) {
this.router.events.subscribe(() => {
if (router.url.toString() === "/tabs/home" && isModalOpened) this.modalController.dismiss();
});
}

如果我只将它添加到我的 if 语句 router.url.toString() === "/tabs/home"它可以工作,但如果用户从欢迎屏幕打开模式(通过按下注册按钮)并在不提交注册表单的情况下关闭它,返回欢迎屏幕,按下登录按钮并登录,然后我会得到一个错误:

Error: Uncaught (in promise): overlay does not exist



当然,这是因为当我是主页时我正在关闭模式,而没有检查模式是否打开。

非常感谢任何帮助,我已经坚持了一段时间了......

最佳答案

您可以调用this.modalCtrl.getTop();功能。如果未定义,则表示该组件不是通过模态 Controller 实例调用的。您可以重构代码,例如:

constructor(
private modalController: ModalController,
private router: Router
) {
this.router.events.subscribe(async () => {
const isModalOpened = await this.modalController.getTop();
if (router.url.toString() === "/tabs/home" && isModalOpened) this.modalController.dismiss();
});
}

关于angular - Ionic v4 - 检查模态是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com