我想在Ionic 2+应用程序中创建一个注销按钮。

我的问题是这样的:

当我单击ProfilePage上的注销按钮时,我将重定向到WelcomePage,然后进行第二次重定向回到ProfilePage(这是注销按钮所在的页面)。

如何阻止第二个重定向?

这是我的html代码:



        </p>
        <a href="#" (click)="logout()" button ion-button block color="danger" icon-start>
            <ion-icon name='log-out'></ion-icon>
            Se déconnecter
        </a>





和我的JS功能:



    logout(){
      this.navCtrl.push('WelcomePage');
    }





在此先感谢您的帮助

最佳答案

因此,Ionic正在使用所谓的“导航堆栈”,其中(应该是)有一个根页面,然后其他页面可能是:


替换rootPage或
被推到顶部(=堆叠在顶部)


可以将Ionic Nav Stack视为这种硬币类比:

javascript - 如何在Ionic 2&#43;中创建注销功能-LMLPHP

因此,您可以替换初始硬币(您的rootPage就是这样的硬币),并且可以放入更多硬币(页面)或从堆栈中弹出它们(删除页面)。

现在,您的问题-在您的情况下,您似乎不在其他页面上执行弹出操作/也没有替换rootPage,或者以其他方式正确管理堆栈。
根据您的用户体验,您可能希望使用户返回到其登录时出现的应用程序状态。

通常,如果您的原始(rootPage)是“欢迎页面”,则要做的是使用以下方法返回该页面(rootPage)

https://ionicframework.com/docs/api/navigation/NavController/#popToRoot

因此,根据您的根页面是什么(不幸的是,您没有提供具有该上下文的代码),您可以:

logout(){
    this.navCtrl.popToRoot();
}


我建议您考虑一下您的导航堆栈策略,然后决定何时分配新的rootPage以及何时推送/弹出。

以我的经验,当我将整个页面/主题/主题导航到用户时,我通常总是替换rootPage,并且仅在其与rootPage相关的另一个页面/模式时才使用push。

另一种研究方式:您不希望堆栈太大(不断推入新页面),也不希望用户“返回”(弹出)超过2-3层。

10-06 04:22