离子弹出页面不起作用

时间:2017-11-20 08:50:26

标签: angular typescript ionic2

我对Ionic很新,我很难回到上一页。 错误未捕获(在承诺中):导航堆栈至少需要一个根。 但是在login()中,我将TabsPage推到根目录(LoginPage)之上。 有了pop(),我想回到LoginPage。

如果你能提供帮助,我会很高兴。

这是我的代码:

myApp.ts:

export class MyApp {
  rootPage:any = 'LoginPage';

  constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {
    platform.ready().then(() => {
      statusBar.styleDefault();
      splashScreen.hide();
    });
  }
}

login.ts:

public login() { 
    this.showLoading()
    this.auth.login(this.registerCredentials).subscribe(allowed => {
      if (allowed) {        
        this.nav.push(TabsPage);
      } else {
        this.showError("Email ou mot de passe incorrect");
      }
    },
      error => {
        this.showError(error);
      });
  }

标签:

export class TabsPage {

  tab1Root = OrdersPage;
  tab2Root = AboutPage;
  tab3Root = ProfilePage;

  /**
   * @constructor
   */
  constructor(private navCtrl: NavController) {}
}

profile.ts:

    public logout(){
      this.auth.logout().subscribe(logedout => {
          if(logedout){
              this.navCtrl.pop();
          }
      });
  }

谢谢。

1 个答案:

答案 0 :(得分:0)

问题是您正尝试从标签页根页面弹出。在Ionic选项卡中,每个选项卡都是其自己的导航堆栈的根。 您需要使用应用程序NavController将LoginPage 设置为root

在profile.ts中,

 import { App } from ionic-angular;


constructor(private app:App){}

public logout(){
  this.auth.logout().subscribe(logedout => {
      if(logedout){
          this.app.getRootNav().setRoot(LoginPage);
      }
  });
}

ALSO ,您需要从LoginPage中将TabsPage设置为root用户,以避免用户按下并返回登录页面。

 if (allowed) {        
    this.nav.setRoot(TabsPage);//here
  } else {
    this.showError("Email ou mot de passe incorrect");
  }