2017-11-20 1 views
0

Ich bin ziemlich neu in Ionic und ich habe Schwierigkeiten, auf die vorherige Seite zurückzukehren. Fehler Uncaught (in Versprechung): Navigationsstapel benötigt mindestens eine Wurzel. Allerdings in Login(), schiebe ich die TabsPage über den Stamm (LoginPage). Mit pop() würde ich gerne wieder auf LoginPage gehen.Ionic Pop-Seite funktioniert nicht

Ich würde mich freuen, wenn Sie helfen könnten.

Hier ist mein Code:

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); 
     }); 
    } 

Registerkarten:

export class TabsPage { 

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

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

profile.ts:

Danke.

+0

Sie sprechen über 'TabsPage', aber ich sehe den Code dafür nicht. –

+0

@Protectator Vielen Dank für Ihre Antwort. Ich aktualisierte meine Frage – OTmn

+0

Ich sehe 'tab3Root = ProfilePage;'. Bedeutet das, dass du die Wurzel auf 'Profil' gesetzt hast? Wenn ja, dann ist das der Grund, warum man nicht mit 'pop' zurückgehen kann: Profil ist jetzt die Wurzel. –

Antwort

0

Das Problem ist, Sie versuchen, von einer Registerkarte Stammseite Pop. In Ionic Tabs ist jede Registerkarte der Stamm eines eigenen Navigationsstapels. Sie müssen LoginPageals root mit der Anwendung NavController festlegen.

In 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); 
     } 
    }); 
} 

AUCH, müssen Sie TabsPage als root von Loginpage zu vermeiden Drücken der Tasten zurück und zurück zu Anmeldeseite setzen.

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

Danke, dass mein Problem gelöst hat – OTmn