我有一个Ionic应用程序,它有标签和身份验证,auth工作正常,但在注销时仍然会显示标签。这是我的登录方法:
logOut(): void {
this.authProvider.logoutUser().then(() => {
this.navCtrl.setRoot('LoginPage');
this.navCtrl.popToRoot();
});
}
这是我的退出方法:
public static function diff_time($date, $timezone = null,$now=null)
{
if($now == null)
{
$now = date_create(date('Y-m-d H:i:s'));
$now = new \DateTime(date('Y-m-d H:i:s'));
$time_now = time();
}
if(is_int($date)){
$time = $date;
$date = date('Y-m-d H:i:s',$date);
}
else{
$time = strtotime($date);
}
$date=new \DateTime($date);
$diff=$date->diff($now);
return $diff`;}
任何帮助表示赞赏
答案 0 :(得分:2)
使用getRootNav
的{{1}}从视图中删除标签。请参阅this working version。
App
答案 1 :(得分:0)
我完全不同意回答帖子中的建议。
应避免涉及parent
和getRootNav()
的所有建议。
这是不可维护的意大利面条。更好的想法是在应用程序组件中订阅表示用户身份验证状态的Observable,并从那里更改根页。
我不确定您是否正在使用Firebase的Ionic应用程序。如果您目前使用的是Firebase,下面是一个简单的示例代码,我强烈建议您使用。
<强> app.component.ts 强>
constructor() {
platform.ready().then((readySource) => {
afAuth.auth.onAuthStateChanged(user => {
console.log("App User", user);
if (user)
this.rootPage = 'HomePage'; // Tabs reside here
else
this.rootPage = 'LoginPage';
});
statusBar.styleDefault();
splashScreen.hide();
});
}
onAuthStateChanged()
方法将监视接收回调的身份验证状态。此回调会在每次身份验证状态更改时触发。因此,无论用户是登录还是用户注销都会触发user =&gt; {}此回调函数。
setting.ts 一些用于放置退出功能的页面。
async logout() {
const user: any = await this.authService.signOut();
}
因此,您不再需要使用this.app.getRootNav().setRoot('Some Page');
。 Firebase将为您处理一切。
我希望这篇文章可以帮助其他人。