2017-03-13 10 views
0

ナビゲーションに問題があります。私は新しい分割ペインを使用しています。ユーザーがログアウトすると、app.component内でsetRootを実行し、ログインページに設定します。ユーザーがobservableにログインすると、app.componentにもログイン値が取得され、setRoot(TabsPage)が実行されます。私はその後、イオン分割ペイン内を移動しようとすると、それはNavControllerBaseがnullであることの内側に伴うキューに例外がスローされます。..ログアウト/ログイン時のIonic2 - setRootがナビゲーションをクラッシュさせます

私は、このリポジトリに同じエラーを再現しました: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)

任意のアイデア?

+0

スプリットペインがなくても機能しますか? –

+0

最初のタブページとして別のページを設定しようとしました。それはまた、ナビゲーションを持っています。 app.componentでsetRootを実行した後のナビゲーションが有効になりました。しかし、分割ペインタブではまだ失敗しました。今私が試みたページには、独自のイオンナビゲーションがありませんが。 – oddcb

答えて

0

問題は、失敗したナビゲーションのソースとしてrxjsサブスクリプションがあることでした。サブスクリプションがサブスクライブされていない親スタックでsetRootを実行したとき。親スタックが置き換えられた後のナビゲーションでは、古いサブスクリプションはナビゲーションを呼び出そうとし、古いスタックがなくなってから失敗します。

ionViewWillUnloadライフサイクルフックの登録解除を行うことで解決します。

関連する問題