2017-08-02 32 views
1

我是新來的離子和試圖使登錄和註銷流程,如何在註銷後實現setRoot?

這是結構

登錄:

LoginPage => TabsPage 

註銷:

TabsPage => LoginPage 

我m當前正在執行註銷this.navCtrl.setRoot(LoginPage) 它將LoginPage設置爲根,但是在cli上cking硬件後退按鈕,LoginPage被解僱,我仍然可以看到在後臺處於活動狀態的TabsPage

我該如何解決這個問題?我如何從Nav中完全刪除TabsPage

+1

如果你使用'app'實例的'rootNav'([docs](https://ionicframework.com/docs/api/components/app/App/)),像這樣'this.app會發生什麼? getRootNav()。setRoot(LoginPage)'? – sebaferreras

+0

我收到一條警告,提示'(getRootNav)已被棄用,並將在下一個主要版本中刪除。使用getRootNavById代替.'和'getRootNavById'需要一些字符串作爲輸入,並且我無法弄清楚如何以正確的方式使用它 –

+1

是的,正如你可以在[this thread](https:// forum)中看到的那樣。 ionicframework.com/t/getrootnav-deprecated-use-getrootnavbyid-whats-the-value-of-the-root-nav-id/96271/18)或[this github issue](https://github.com/ionic -team/ionic-site/issues/1197)應該如何使用'getRootNavById'並不是很清楚。 *解決方法*將是'getNav(){ var navs = this._app.getRootNavs(); if(navs && navs.length> 0){ return navs [0]; } return this._app.getActiveNav('nav'); }' – sebaferreras

回答

1

使用this.navCtrl.setRoot(LoginPage)時存在不一致,因爲它導致TabsPage即使在完全註銷後仍然存在。因此,我在app.component.ts使用RxJS ReplaySubject

找到一種解決方法通過直接改變rootPage變量引用我這Github Source具有使用RxJS

實施
-1

嘗試:

this.appCtrl.getRootNavs()[0].setRoot('LoginPage'); 

這對我的作品!