2017-08-08 2 views
0

Ich arbeite gerade an einem Ionic-Projekt, bei dem ich je nach Benutzertyp auf verschiedene Seiten umleiten muss. Leider scheint this.nav.push() nicht zu funktionieren. Mein Code ist wie folgt:Umleiten zu einer anderen Seite je nach Parameter in Ionic

export class Login { 

public email: string; 
public password: string; 
public nav: NavController; 

    constructor(public navCtrl: NavController) { 
} 

ionViewDidLoad() { 
console.log('ionViewDidLoad Login'); 
} 

userlogin() { 
Backendless.UserService.login(this.email, this.password, true) 
.then(this.userLoggedIn) 
.catch(this.gotError); 
} 

userLoggedIn(user) 
    { 
     console.log("user has logged in"); 
    if (user.user_type ==="g") 
    this.nav.push(Guesthome); 
    else 
    this.nav.push(Agenthome); 
    } 

    gotError(err) 
    { 
     console.log("error message - " + err.message); 
     console.log("error code - " + err.statusCode); 
    } 

} 
+0

Was ist der Fehler? – misha130

+0

Der Fehler ist: 'Fehlermeldung - Eigenschaft 'navCtrl' von undefined kann nicht gelesen werden –

Antwort

2

Während this in Rückrufe mit, bedenken Sie, dass Sie den ursprünglichen Kontext zu halten haben.

Option1: Halten Sie den Zusammenhang von bind:

userlogin() { 
    Backendless.UserService.login(this.email, this.password, true) 
    .then(this.userLoggedIn.bind(this)) // <------ bind this to keep the context 
    .catch(this.gotError); 
} 

Option2: arrow function verwenden, den Kontext zu halten

userlogin() { 
    Backendless.UserService.login(this.email, this.password, true) 
    .then(res => this.userLoggedIn(res))  
    .catch(this.gotError); 
} 
Verwandte Themen