我对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();
}
});
}
谢谢。
答案 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");
}