Javascript 如何在爱奥尼亚2+;

Javascript 如何在爱奥尼亚2+;,javascript,angular,ionic-framework,logout,Javascript,Angular,Ionic Framework,Logout,我想在我的Ionic 2+应用程序中创建一个注销按钮 我的问题是: 当我点击ProfilePage上的注销按钮时,我会重定向到WelcomePage,然后会有第二个重定向回ProfilePage(注销按钮所在的页面) 如何阻止第二次重定向 以下是我的html代码: 有关我的代码的更多详细信息: Profile.ts 从'@angular/core'导入{Component}; 从“离子角度”导入{IonicPage,NavController}; 从“/../../models/User”导

我想在我的Ionic 2+应用程序中创建一个注销按钮

我的问题是:

当我点击ProfilePage上的注销按钮时,我会重定向到WelcomePage,然后会有第二个重定向回ProfilePage(注销按钮所在的页面)

如何阻止第二次重定向

以下是我的html代码:


有关我的代码的更多详细信息:

Profile.ts
从'@angular/core'导入{Component};
从“离子角度”导入{IonicPage,NavController};
从“/../../models/User”导入{User};
从“angularfire2/auth”导入{AngularFireAuth};
从'ionic angular'导入{AlertController};
从“../pages”导入{WelcomePage};
@IonicPage()
@组成部分({
选择器:“页面配置文件”,
templateUrl:'profile.html'
})
导出类配置文件页面{
user={}作为用户;
pageTitle=“Profile”;
disableForm:Boolean=true;
电子邮件:字符串;
idUser:string='';
/**
*@text与后台API和数据库集成
*未完成
*/
配置文件={
封面图片:“assets/img/splashbg.png”,
联系人:“通过ce formulaire向使用人、联系人提供服务。”,
提到:“Lisez les在cliquant ici中提到légales:”,
密码:'Pour modifier votre mot de passe cliquez ci dessous:',
注销:“Se déconnecter,bouton juste en dessous。”,
删除:“供应商的定义,请遵守。”
};
/**
*@data userTest使用API实现
*未完成
*/
用户测试={
用户名:“romain”,
profileImage:'assets/img/romain.jpg',
国家:'法国',
城市:“巴黎”,
说明:“”,
语言:[“法语”、“英语”],
};
建造师(
公共navCtrl:NavController,
私人aFAuth:AngularFireAuth,
私有alertCtrl:AlertController
) {  
this.aFAuth.authState.subscribe(
数据=>{
this.idUser=data.uid;
this.email=data.email;
}
)
}
ionViewWillLoad(){
console.log(“已加载配置文件页”);
} 
ionViewDidLoad(){
this.idUser=this.aFAuth.auth.currentUser.uid;
}
/**
*编辑用户信息(Firebase和数据库)
*未完成
*@方法编辑
*/
编辑(用户){
this.disableForm=!this.disableForm;
console.log(用户);
//检查条目是否为空
//更新firebase中的条目
//更新数据库中的条目
};
/**
*使用Firebase API编辑密码
* 
*@method-editPassword
*只返回用户收到的电子邮件
*/
编辑密码(){
如果(this.email==null){
const alert=this.alertCtrl.create({
标题:“电子邮件视频!”,
副标题:“接触器le支持”,
按钮:[“确定”]
});
alert.present();
}否则{
this.aFAuth.auth.sendPasswordResetEmail(this.email);
const alert=this.alertCtrl.create({
标题:“电子邮件特使!”,
副标题:“联合国向你的特使发送电子邮件。维列兹和苏伊夫的指示。”,
按钮:[“确定”]
});
alert.present();
}
};
/**
*使用Firebase从配置文件页面删除用户。
*未完成仍然是一个控制台错误,但用户已被删除
*@methoddeleteUser
*/
deleteUser(){
var userDelete=this.aFAuth.auth.currentUser;
const deleteConfirm=this.alertCtrl.create({
标题:“抑制竞争?”,
信息:“Cette action va Supplier votre compte ainsi que toutes les données qui y Son relié。Cette action是一个值得称赞的行动。”,
按钮:[
{
文本:“非”,
处理程序:()=>{
console.log('Non');
}
},
{
文本:“Ok”,
处理程序:()=>{
试一试{
userDelete.delete();
console.log('deleted');
这个.navCtrl.push('WelcomePage');
}捕获(e){
这个.navCtrl.push('WelcomePage');
}
}
}
]
});
deleteConfirm.present();
}
/**
*使用Firebase Web API注销方法注销
*uid上的未完成错误
*@方法注销
*/
注销(){
试一试{
这个.navCtrl.push('WelcomePage');
console.log(“用户注销1”);
}抓住{
这个.navCtrl.push('WelcomePage');
console.log(“用户注销2”);
}
console.log(“用户注销3”);
}

}
因此,爱奥尼亚正在使用所谓的“导航堆栈”,其中有(应该有)一个根页面,然后其他页面可能会:

  • 替换rootPage或
  • 推在上面(叠在上面)
将爱奥尼亚导航堆栈视为一个硬币类比:

因此,您可以替换初始硬币(您的根页面就是这样一个硬币),您可以从堆栈中推入更多硬币(页面)或弹出它们(删除页面)

现在回答你的问题-在你的情况下,你似乎没有在其他页面上执行pop/也没有替换rootPage,或者以其他方式正确管理堆栈。 根据您的用户体验,您可能希望将用户返回到登录时出现的应用程序状态

通常,如果您的原始页面(rootPage)是欢迎页面,那么您要做的是使用

因此,根据您的根页面是什么(y
logout(){
    this.navCtrl.popToRoot();
}
logout(){
     //clear any storage and cached data
    this.app.getRootNav().setRoot(LoginPage);
}