这是谷歌登录的代码。在我的代码中,当用户首次以管理员身份登录时,显示警告与您是新的按钮'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);
}
但结果没有结果。
如何在登录后显示侧边菜单而不刷新页面?
答案 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;
希望这会对你有所帮助!!