使用Google

时间:2018-03-01 05:22:29

标签: angular ionic3

这是谷歌登录的代码。在我的代码中,当用户首次以管理员身份登录时,显示警告与您是新的按钮'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);
} 

但结果没有结果。

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

1 个答案:

答案 0 :(得分:1)

我认为您必须在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 Page的{​​{1}},所以菜单切换不会显示在NavController中。

在导航经过根页面后,在navbar中未显示菜单切换按钮常见于本机应用中。但是,通过在navbar组件上设置persistent="true",仍然可以始终在导航栏中显示菜单切换按钮。

如果以上解决方案不适合您,则只需声明ion-menu然后使用以下内容:

rootPage: any = AdminSideMenuPage;

请从hereherehere查看更多详情。

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