[英]Ion-menu is not displaying after login with google
這是谷歌登錄的代碼。在我的代碼中,當用戶首次以管理員身份登錄時顯示與您的警報是按鈕``確定''處理程序中的新增功能,使用
this.navCtrl.push(AdminSideMenuPage);
googleAuthentication(){
localStorage.clear();
this.loading.present();
//--- For windows G+ login
if (this.platform.is('core') || this.platform.is('mobileweb')) {
this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider().setCustomParameters({
'prompt': 'select_account'})).then(res =>{
this.userdata={
email:res.user.email,
image:res.user.photoURL,
displayName: res.user.displayName
}
localStorage.setItem('LoginStatus','true');
localStorage.setItem('gmaildata', JSON.stringify(this.userdata));
this.login(res.user.email);
}).catch(err=>{
//console.log("err "+JSON.stringify(err))
this.loading.dismiss();
})
}
//--- For Android G+ login
else {
var options = {'prompt':'select_account'};
this.googlePlus.login(options)
.then(res => {
this.userdata={
email:res.email,
image:res.imageUrl,
displayName:res.displayName
}
localStorage.setItem('gmaildata', JSON.stringify(this.userdata));
this.login(res.email);
})
.catch(err => {
//console.log("errg+"+JSON.stringify(err))
this.loading.dismiss();
})
}
}
login(gmail){
if(!this.docStyle){
// Doctor
localStorage.setItem('LoginStatus','Doctrue');
this.Receptionists.subscribe(data => {
var user = false;
for(var i = 0;i < data.length;i++)
{
if(gmail == data[i].receptionistsnames){
localStorage.setItem('Adminid',data[i].adminid);
user = true;
}
}
if(user)
{
this.loading.dismiss();
if(this.platform.is('core') || this.platform.is('mobileweb'))
this.navCtrl.push(SideMenuPage);
else
this.navCtrl.push(TabsPage);
}
else{
this.loading.dismiss();
let alert = this.alertCtrl.create({title: 'Invalid Receptionist',message: 'You Are Not a Registered User.',
buttons: [{text: 'Ok',
handler: () => {
if (this.platform.is('core') || this.platform.is('mobileweb'))
this.afAuth.auth.signOut();
else
this.googlePlus.logout();
window.location.reload();
}
}]
});
alert.present();
}
})
}
else{
//Admin
localStorage.setItem('LoginStatus','Admintrue');
this.admin.subscribe(data => {
var user = false;
for(var i = 0;i < data.length;i++)
{
if( gmail == data[i].email)
user = true;
}
if(user){
this.navCtrl.push(AdminSideMenuPage);
this.loading.dismiss();
}
else
{
this.loading.dismiss();
//this.navCtrl.setRoot(AdminSideMenuPage);
let alert = this.alertCtrl.create({title: 'Admin Login',message: 'you are New.',
buttons: [{text: 'Ok',
handler: () => {
this.startdate= new Date();
this.enddate=this.startdate.setDate( this.startdate.getDate() + 50 );
this.admin.push({
adminid:gmail,
email:gmail,
startdate:Date.now(),
enddate:this.enddate,
})
alert.dismiss().then(() => {
this.navCtrl.push(AdminSideMenuPage);
this.navCtrl.pop().then(data => {
this.navCtrl.push(AdminSideMenuPage);
// this.navCtrl.setRoot(AdminSideMenuPage);
// this.navCtrl.popToRoot();
});
});
//return false;
// let navTransition = alert.dismiss();
// navTransition.then(() => {
// this.navCtrl.setRoot(AdminSideMenuPage);
// });
// return false;
}
}]
});
alert.present();
}
})
}
}
使用Google登錄后,不會顯示副菜單,但是顯示刷新副菜單時。
我正在使用this.navCtrl.push(AdminSideMenuPage);
在login.ts
文件中。
我努力了
ionViewDidEnter() {
this.menuCtrl.enable(true);
}
但是沒有結果。
登錄后不刷新頁面如何顯示側邊菜單?
我認為您必須在ion-menu
項中嘗試persistent="true"
。
在app.html
使用示例代碼,如下所示
<ion-menu persistent="true" [content]="content">...</ion-menu>
實際上,默認情況下, menus
,尤其是navbar
欄中的菜單切換按鈕,僅顯示在其NavController
的root page
。 例如,在Page 1
, menu toggle
將顯示在navbar
menu toggle
。 但是,導航到Page 2
,因為它不是該NavController
的root Page
,所以菜單切換將不會顯示在navbar
。
不顯示在菜單切換按鈕, navbar
本地應用程序內常見的導航過去的根頁之后。 但是,仍然可以通過在ion-menu
組件上設置persistent="true"
來始終在導航欄中顯示菜單切換按鈕。
如果上述解決方案對您不起作用,則只需聲明rootPage: any = AdminSideMenuPage;
然后使用以下命令:
if (!user) {
this.nav.setRoot(Home);
}
希望這對您有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.