簡體   English   中英

使用Google登錄后未顯示離子菜單

[英]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欄中的菜單切換按鈕,僅顯示在其NavControllerroot page 例如,在Page 1menu toggle將顯示在navbar menu toggle 但是,導航到Page 2 ,因為它不是該NavControllerroot Page ,所以菜單切換將不會顯示在navbar

不顯示在菜單切換按鈕, navbar本地應用程序內常見的導航過去的根頁之后。 但是,仍然可以通過在ion-menu組件上設置persistent="true"來始終在導航欄中顯示菜單切換按鈕。

如果上述解決方案對您不起作用,則只需聲明rootPage: any = AdminSideMenuPage; 然后使用以下命令:

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

請從此處此處此處檢查更多詳細信息。

希望這對您有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM