我是Ionic的新手,我很难回到上一页。错误被捕获(在承诺中):导航堆栈至少需要一个根。但是,在登录()中,我将TabSpage推在根上方(登录页)。使用POP(),我想返回登录页。
如果您能提供帮助,我会很高兴。
这是我的代码:
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();
}
});
}
谢谢。
问题是您正在尝试从选项卡根页面弹出。在离子选项卡中,每个选项卡都是其自己的导航堆栈的根。您需要使用应用程序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);
}
});
}
另外,您需要将tabspage设置为loginPage的root,以避免用户向后按并返回登录页。
if (allowed) {
this.nav.setRoot(TabsPage);//here
} else {
this.showError("Email ou mot de passe incorrect");
}