2017-08-02 60 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'); 

这对我的作品!