2017-07-14 55 views
6

当用户点击my profile页面(或标签)中,用户没有在登录然后它显示login page如图below.On的login page地方有header back button并且它是工作正常(你可以看到下面的代码)。当用户点击hardware back button on Android device时,我需要相同的功能。但它关闭了应用程序。你能告诉我如何解决这个问题吗?如果您需要更多信息,请让我知道。硬件后退按钮关闭上标签的应用程序启用离子3应用

我-profile.ts

constructor(public navCtrl: NavController, public app: App, public userService: UserService 
     ) { 
     if (!this.userService.userDetails) { 
      this.app.getRootNav().setRoot('Login', { profile: true }); 
      return; 
     } 
    } 

login.ts

constructor(public navCtrl: NavController, public navParams: NavParams) { 
     this.profile = this.navParams.data.profile; 
    } 

    back() { 
     if (this.profile) {//not logged in user 
      this.navCtrl.setRoot('TabsPage'); 
     } 
    } 

的login.html

<ion-header> 
    <ion-navbar> 
    <ion-buttons left> 
     <button ion-button *ngIf="profile" (click)="back()" tappable><ion-icon name="arrow-back"></ion-icon></button> 
    </ion-buttons> 
    <ion-title>login</ion-title> 
    </ion-navbar> 
</ion-header> 

<ion-content padding> 

</ion-content> 

回答

7

您可以使用平台当用户按下本地后退按钮时,要处理的方法是registerBackButtonAction()

import { Platform } from 'ionic-native'; 
... 
constructor(public platform: Platform){ 

    platform.registerBackButtonAction(() => { 
    if (navCtrl.canGoBack()) { // CHECK IF THE USER IS IN THE ROOT PAGE. 
     navCtrl.pop(); // IF IT'S NOT THE ROOT, POP A PAGE. 
    } else { 
     platform.exitApp(); // IF IT'S THE ROOT, EXIT THE APP. 
    } 
    }); 

} 

但这里的情况是,你设置的根,而不是推的网页,所以这是离子的正常行为,在根页面并没有什么流行来,应用程序被关闭。

在这种情况下,你可以做这样的事情在你的login.ts

platform.registerBackButtonAction(() => { 
    this.back(); 
}); 

所以每次用户在登录页面和时间打硬件后退按钮它只是打电话给你back()方法会将根设置为另一页。

希望这会有所帮助。

+0

非常感谢,friend.It工作完全正常:) – Sampath

+0

为什么不把“登入”页面“推”到导航栈上,然后后退按钮就可以做一个弹出窗口(因为硬件背面默认会执行)?似乎比设置根目录和压倒一切的按钮更容易。 –

+0

@ rory_za想到了这一点,但也许是应用程序需要工作的方式,比如“嘿,你可以使用你想要的应用程序,但是如果你去看你的个人资料,但它没有记录你需要登录'这种推送页面并不是最好的,因为用户可以返回并查看简介页面,即使没有登录,所以在这种情况下,根源是最好的方法之一。另一个是使用模式,所以如果用户无法登录,他可以将一些东西传回页面。 –

相关问题