我想创建一个基本清理logout()
的函数LocalStorage
,然后重定向到我的LoginPage
logout() {
localStorage.removeItem(authenticated_user_key_name); // "authenticated_user"
this.navCtrl.push(LoginPage);
}
但我想在多个页面中调用此功能,HomePage
,HomeUserPage
,ChatPage
我知道我可以将此功能放在我的app.modules.ts
中,但我想要分发这些功能,login()
,logout()
,refreshToken()
等......
我还没有很好地理解离子结构,所以我应该创造什么?
我已尝试使用提供商AuthProvider
,但我发现我无法在提供商中导入navController
,因此,当我{我无法重定向到我的login
页面时{1}}
我应该把这些全局函数放在哪里?
答案 0 :(得分:1)
为了保持结构和清洁,我建议您评估您对应该提供的方法/功能的需求"跨越许多页面/组件并创建一个新的 foundation.provider.ts ,它可以:
所以你需要:
更新: 因为这个问题还包括将页面推送到navstack的能力 - 这通常不适用于提供者(NavController需要一个组件)。
要解决这个问题,有几个策略:
这将需要app.component
中的按钮
<button ion-button block clear menuClose (click)="logout()">LOGOUT</button>
&#13;
和app.component.ts中的代码:
logout() {
// cleans out data and sets login page as root:
this.foundation.logout();
// does navigate user
this.nav.setRoot('LoginPage');
}
<button ion-button outline (click)="this.foundation.logout(); this.nav.setRoot('loginPage')">
Logout
</button>
&#13;
希望这很清楚。
有第三个选项是hacky - 将App导入您的基础并调用getActiveNavs()方法。但我不建议这样做。