通常のナビゲーションにはnav.push()
とnav.pop()
を使用しますが、ログインを成功させた後にHomePageを設定するなど、私は遅延ロードでnav.setRoot()
を使用します。また、ユーザーがプロフィールを更新したときにページを更新するようにsetRoot('HomePage')
と呼んでいます。Ionic setRootは複数のインスタンスを同時に実行しています
しかし、私が経験している問題は、HomePageが何度もロードされているということです。ブラウザの更新ボタンを押しても、コンソールにさらに多くのインスタンスが表示されます。
私はapp.component.tsのイベントリスナーを介してすべてのsetRoot呼び出しを呼び出して、呼び出された回数を記録していますが、すべて正常です。私はappCtrl.getRootNav().setRoot(page, args)
を使ってみましたが、何も変わりません。
見た目はどこですか? setRootを呼び出した後、手動でページを破棄するか、ナビゲーションスタックをクリアする必要がありますか?
ありがとうございます!
EDIT(いくつかのコード):app.component.tsでsetRootイベントに
サブスクリプション:
:this.events.subscribe('nav:setRoot', (data) => {
let page = data['page'];
let args = data['data'];
if(args !== null && args !== 'undefined'){
this.appCtrl.getRootNav().setRoot(page, args);
}else{
this.appCtrl.getRootNav().setRoot(page);
}
});
私は新しいルート・ページを設定したい任意のページから、
let arg = { page: 'HomePage'};
this.events.publish('nav:setRoot', arg);
コードの数行は数千語に相当します。コードの数行を共有できますか? – Sampath
こんにちはサンパス、私は私がそれをやっている方法を示すために私の質問を編集しました。ナビゲーションプロセスでは、それほど多くのコードは必要ありません。ありがとう! – emiliosg