我的Ionic应用程序有一个奇怪的问题,我有两个不同的逻辑导航堆栈,第一个用于登录,第二个用于登录后使用实际应用程序。在登录和注销时,将更改根页面并更改最终生成的导航堆栈。
我第一次登录时,一切都很完美。但是,当我从HomePage注销并再次切换到LoginPage时,我无法再通过其按钮访问LocalLoginPage。点击事件已注册,我已经验证过,但this.navCtrl.push(LocalLoginPage)
什么也没做。
相关的LoginPage HTML:
<ion-content padding>
<button ion-button full (click)="localLogin()">Local login</button>
<hr/>
</ion-content>
相关的LoginPage代码:
localLogin() {
try {
this.navCtrl.push(LocalLoginPage);
console.dir(this.navCtrl.getViews()); // this displays only LoginPage when the error occurs
} catch(e) {
window.alert(Util.formatError("localLogin error", e));
}
}
注销按钮(在HomePage中)代码:
@Component({
selector: 'logout-button',
templateUrl: 'logout-button.html'
})
export class LogoutButtonComponent {
constructor(public navCtrl: NavController, public oauthService: OAuthService,
public localLogin: LocalLoginProvider) {
}
logout() {
this.oauthService.logOut();
this.localLogin.user = null;
this.navCtrl.setRoot(LoginPage);
this.navCtrl.popToRoot();
}
}
有谁知道为什么会这样?
答案 0 :(得分:1)
您可以在没有this.navCtrl.popToRoot();
的情况下尝试。
logout() {
this.oauthService.logOut();
this.localLogin.user = null;
this.navCtrl.setRoot(LoginPage);
}