爱奥尼亚4从历史记录中删除页面(Android)

爱奥尼亚4从历史记录中删除页面(Android),android,angular,ionic-framework,routing,Android,Angular,Ionic Framework,Routing,Android设备在菜单工具栏上有后退按钮。当我登录到我的应用程序并点击后退按钮在登录页面上发送时,我想禁用这种可能性 我想如果用户在登录后单击后退按钮,然后我关闭应用程序。 下面是我的初始路由代码 if (token) { this.router.navigate(['/main-tabs/tabs/dashboard']) } else { this.router.navigate(['/login']).then(); } 我从您的问题中了解到的是,在用户登录后,若单击“

Android设备在菜单工具栏上有后退按钮。当我登录到我的应用程序并点击后退按钮在登录页面上发送时,我想禁用这种可能性

我想如果用户在登录后单击后退按钮,然后我关闭应用程序。 下面是我的初始路由代码

if (token) {
    this.router.navigate(['/main-tabs/tabs/dashboard'])
} else {
    this.router.navigate(['/login']).then();
}

我从您的问题中了解到的是,在用户登录后,若单击“上一步”按钮,您不希望导航到登录页面。如果我正确理解了你的问题,你可以尝试下面的解决方案

一种方法是更改根页面

您可以通过在成功转换后从堆栈中删除页面来实现这一点。将下面的代码放入登录成功方法中


希望这对您有所帮助。

我想您可以这样做:

  this.platform.backButton.subscribe((()=>{

      if(this.router.url == <insertpathhome>) 
      {
        this.platform.exitApp();
      }
      else{
        //go back
      }
    });  
this.platform.backButton.subscribe((()=>{
如果(this.router.url==)
{
this.platform.exitApp();
}
否则{
//回去
}
});  

我尝试了许多其他答案,但没有一个对我有效。但这一个有效:

要禁止登录在注销后“返回”到已验证页面,只需在
app routing.module.ts中执行类似操作即可:

{
    path: 'home',
    loadChildren: './home/home.module#HomePageModule',
    canActivate: [LoggedAuthGuard]
}
相反的情况也一样(防止使用“后退”按钮返回登录页面):

LoggedAuthGuard
NotLoggedAuthGuard
都必须实现
CanActivate
。示例代码如下(使用
Promise
,但也可以使用布尔返回):

对于
NotLoggedAuthGuard
您只需返回与
LoggedAuthGuard
相反的值

async canActivate() {
    return (await !this.storage.get('access_token'));
}
希望这会有所帮助。

提供了一种解决方案,可以将登录页面从浏览器历史记录中删除,方法是将其替换为用户成功登录后导航到的页面。这可能是一种快速有效的解决方案:

我想在登录到我的应用程序并单击时禁用这种可能性 登录页面上的返回按钮


我尝试了navigateRoot,但它对我不起作用。我不能使用remove方法,因为我使用的是ionic 4,而且它没有此方法。您在哪里获取navCtrl变量?首先从“ionic angular”导入{NavController};
然后是
构造函数(公共navCtrl:NavController){}
@ABHISHEKG您已经将他的文档链接到了ionic v3,但他表示他使用的是ionic v4,它不再具有.remove()方法。您可以提供有关ionic 4路由的文档链接吗?您在哪里获取navCtrl变量?我不想关闭应用程序,我想在单击安卓右键时看到它。(所有未使用但未关闭的程序(在后台))我不明白你的问题,你说:“如果用户登录后单击后退按钮,我想关闭应用程序。”对我来说,你想退出应用程序。
{
    path: 'home',
    loadChildren: './home/home.module#HomePageModule',
    canActivate: [LoggedAuthGuard]
}
{
    path: 'login',
    loadChildren: './login/login.module#LoginPageModule',
    canActivate: [NotLoggedAuthGuard]
}
import { Injectable } from '@angular/core';
import {CanActivate} from "@angular/router";
import {Storage} from "@ionic/storage";

@Injectable({
  providedIn: 'root'
})
export class LoggedAuthGuard implements CanActivate {
  constructor(protected storage: Storage) { }

  async canActivate() {
      return (await !!this.storage.get('access_token'));
  }
}
async canActivate() {
    return (await !this.storage.get('access_token'));
}