登录谷歌后,不会显示离子菜单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了登录谷歌后,不会显示离子菜单相关的知识,希望对你有一定的参考价值。

这是谷歌登录的代码。在我的代码中,当用户首次以管理员身份登录时,向您显示警报是按钮'ok'处理程序中的新功能

 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();
        }
      })
    }
  }

登录后,谷歌离子侧面菜单不显示,但显示刷新侧面菜单。

我在this.navCtrl.push(AdminSideMenuPage);文件中使用login.ts

我试过了

ionViewDidEnter() {
  this.menuCtrl.enable(true);
} 

但最终没有结果。

如何在登录后显示侧边菜单而不刷新页面?

答案

我想你必须在你的persistent="true"项目中尝试ion-menu

app.html中使用以下示例代码

 <ion-menu persistent="true" [content]="content">...</ion-menu>

实际上默认情况下,menus,特别是navbar中的菜单切换按钮,只显示在root page内的NavController上。例如,在Page 1上,menu toggle将在navbar中显示。然而,当导航到Page 2时,因为它不是root PageNavController,菜单切换将不会显示在navbar中。

在浏览根页面后,在本机应用程序中常见的不显示navbar中的菜单切换按钮。但是,通过在persistent="true"组件上设置ion-menu,仍然可以始终在导航栏中显示菜单切换按钮。

如果以上解决方案不适合您,则只需声明rootPage: any = AdminSideMenuPage;然后使用以下内容:

 if (!user) {
   this.nav.setRoot(Home);
  }

请查看hereherehere的更多详情。

希望这会对你有所帮助!!

以上是关于登录谷歌后,不会显示离子菜单的主要内容,如果未能解决你的问题,请参考以下文章

离子2 - 如何管理全局变量?

Laravel 7 Socialite Google 登录显示无效的授权错误

选择导航菜单项时不会替换上一个片段

离子应用谷歌地图显示 - 移动设备位置问题

如何在登录后打开离子侧菜单上检查身份验证?

当我按下屏幕离子 3 时菜单不起作用