Angular Ionic v4-检查模态是否打开
基本上我有两个按钮欢迎页面;登录并注册。当用户单击“注册”按钮时,将打开一个显示注册表单的模式。我实现了一个在注册时登录用户的逻辑,还有一个在用户通过身份验证时将用户带到主页的逻辑 这意味着,当用户提交注册表并登录时,该模式必须被取消,但仅在显示主页后才可以。否则,如果在此之前关闭模式,那么用户将再次看到欢迎屏幕,我希望避免这种行为。我可以很容易地在注册时取消模式,但正如我所说的,我不希望用户再次看到欢迎屏幕 这就是我在欢迎中打开模式的方式。tsAngular Ionic v4-检查模态是否打开,angular,ionic4,Angular,Ionic4,基本上我有两个按钮欢迎页面;登录并注册。当用户单击“注册”按钮时,将打开一个显示注册表单的模式。我实现了一个在注册时登录用户的逻辑,还有一个在用户通过身份验证时将用户带到主页的逻辑 这意味着,当用户提交注册表并登录时,该模式必须被取消,但仅在显示主页后才可以。否则,如果在此之前关闭模式,那么用户将再次看到欢迎屏幕,我希望避免这种行为。我可以很容易地在注册时取消模式,但正如我所说的,我不希望用户再次看到欢迎屏幕 这就是我在欢迎中打开模式的方式。ts async showModal() {
async showModal() {
const modal = await this.modalController.create({
component: RegisterPage
});
return modal.present();
}
在register.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”
中,它会工作,但是如果用户从欢迎屏幕打开模式(通过按注册按钮)并关闭模式,而不提交注册表单,返回欢迎屏幕,按登录按钮并登录,那么我将得到一个错误:
错误:未捕获(承诺中):覆盖不存在
当然,发生这种情况是因为当我是主页上的管理员时,我会取消模式,而不检查模式是否打开
非常感谢您提供的任何帮助,我已经坚持了一段时间了…您可以调用
this.modalCtrl.getTop()代码>函数。如果未定义,则表示未通过模态控制器实例调用该组件。您可以重构代码,如下所示:
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();
});
}
你可以这样使用它
async showModal() {
this.modal = await this.modalController.create({
component: RegisterPage
});
return this.modal.present();
}
检查任何地方
if (this.modal) {
this.modalController.dismiss();
}
如果您的案例需要,您应该在dismise()之后清除其值。在这种情况下,async
不会返回确切的当前路由