Ionic2 - logout / login上的setRoot崩溃导航

时间:2017-03-13 14:35:08

标签: ionic-framework ionic2

我在导航方面遇到了一些麻烦。我正在使用新的拆分窗格。当用户注销时,我在app.component中执行setRoot并将其设置为登录页面。当用户登录observable时,也会在app.component中获取登录值并完成setRoot(TabsPage)。当我尝试在离子拆分窗格内导航时,由于NavControllerBase中的队列为空,它会引发异常..

我在此存储库中重新创建了相同的错误:https://github.com/oddcb/ionic-split-pane-example

首先尝试导航菜单,而不单击“主页”视图中的按钮。然后单击按钮并再次尝试导航。

它崩溃了:

TypeError: Cannot read property 'push' of null at NavControllerBase._queueTrns (http://localhost:8100/build/main.js:45173:20) at NavControllerBase._setPages (http://localhost:8100/build/main.js:45103:21) at NavControllerBase.setRoot (http://localhost:8100/build/main.js:45077:21) at SafeSubscriber._next (http://localhost:8100/build/main.js:84883:39) at SafeSubscriber.__tryOrUnsub (http://localhost:8100/build/main.js:1354:16) at SafeSubscriber.next (http://localhost:8100/build/main.js:1303:22) at Subscriber._next (http://localhost:8100/build/main.js:1256:26) at Subscriber.next (http://localhost:8100/build/main.js:1220:18) at Subject.next (http://localhost:8100/build/main.js:7729:25) at SplitCommunication.setRootPage (http://localhost:8100/build/main.js:20749:26) at MenuLevel1.viewLevel2 (http://localhost:8100/build/main.js:84724:33) at CompiledTemplate.proxyViewClass.View_MenuLevel10.handleEvent_13 (/AppModule/MenuLevel1/component.ngfactory.js:201:34) at CompiledTemplate.proxyViewClass.<anonymous> (http://localhost:8100/build/main.js:134705:37) at HTMLButtonElement.<anonymous> (http://localhost:8100/build/main.js:58120:53) at t.invokeTask (http://localhost:8100/build/polyfills.js:3:10284)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

问题是我有一个rxjs订阅作为失败导航的来源。当我在父堆栈上执行setRoot时,订阅未被取消订阅。在更换父堆栈后的导航中,旧订阅将尝试调用导航,然后由于旧堆栈消失而失败。

通过在ionViewWillUnload生命周期钩子中取消订阅来解决。

相关问题