5

これが私が達成しようとしているものです。私はすでにアプリケーションにログインしていますが、ログアウトすると、ログイン画面でページを更新するまでタブが残ります。ログアウトするときにログイン画面から削除したい方法、何私はここで逃した?これが私がすることです:

私の app.component.ts :

export class MyApp {
  public rootPage: any = TabsPage;

  constructor(platform: Platform) {

    if (localStorage.getItem("currentUser") === null) {
      console.log("not logged in");
        this.rootPage = LoginPagePage;
    } else {
      console.log("already logged in");
        this.rootPage = TabsPage;
    }

    platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      StatusBar.styleDefault();
      Splashscreen.hide();
    });
  }
}

以下は私の tabs.ts です:

export class TabsPage {

  public tab1Root: any;
  public tab2Root: any;
  public tab3Root: any;

  constructor() {
    this.tab1Root = HomePage;
    this.tab2Root = AboutPage;
    this.tab3Root = ExplorePage;
  }

}

次に、ここに私の tabs.html があります:

私がそれを行うと、最初のロード時に正常に表示され、タブが表示されません。次に、ログインした後、設定します

this.navCtrl.setRoot(TabsPage);

ここに私のログアウトコードがあります:

  logout(){
    localStorage.removeItem("currentUser");
    this.navCtrl.setRoot(LoginPagePage);
  }

そこで、すでに LoginPagePage に setRoot を設定していますが、それでもタブが画面に表示されるのはなぜですか? これを修正するには?

4

4 に答える 4

0

あなたはこのようなことをすることができます

あなたの

this.navCtrl.setRoot(LoginPagePage);

これに

    this.navCtrl.push(LoginPagePage);

    or 

    this.navCtrl.pop();

ログインページ内でヘッダー部分を削除します

そして app.module.ts ファイルで

必ず非表示にするtabsHideOnSubPages=true

import { IonicApp, IonicModule } from 'ionic-angular';

@NgModule({
  declarations: [ MyApp ],
  imports: [
    IonicModule.forRoot(MyApp, {
      // Configs for your app
      tabsHideOnSubPages: true
      // ...
    }, {}
  )],
  bootstrap: [IonicApp],
  entryComponents: [ MyApp ],
  providers: []
})

詳細については、このページをご覧ください http://ionicframework.com/docs/v2/api/config/Config/

于 2016-12-07T11:04:55.073 に答える
0

後世のためにここに残すだけです。このログアウト機能は、副作用なしで機能しているようです。@uiktiomasfeliz github-linkに感謝します。

cli packages: (/usr/local / lib / node_modules)

@ionic / cli - utils: 1.19 .2
ionic(Ionic CLI): 3.20 .0
global packages:

  cordova(Cordova CLI): 7.1 .0
local packages:

  @ionic / app - scripts: 3.1 .2
Cordova Platforms: android 6.3 .0 ios 4.5 .4
Ionic Framework: ionic - angular 3.9 .2
System:

  ios - deploy: 1.9 .2
Node: v8 .9 .1
npm: 5.7 .1
OS: macOS High Sierra
Xcode: Xcode 9.3 Build version 9E145
async logOut() {
  await this.authProvider.logout();
  await this.app.getRootNav().setRoot('LoginPage');
}
于 2018-04-15T19:45:58.580 に答える