私はルートの後ろにビューを持つアプリケーションを持っていますが、ルートが変更された時点から続行できる必要がありますが、戻った後、コンポーネントは初期状態。Angular2経路を変更するときのコンポーネントの状態を維持する
コンポーネントの状態を保持する方法はありますか?
私はルートの後ろにビューを持つアプリケーションを持っていますが、ルートが変更された時点から続行できる必要がありますが、戻った後、コンポーネントは初期状態。Angular2経路を変更するときのコンポーネントの状態を維持する
コンポーネントの状態を保持する方法はありますか?
今固定のUpdate 2
カスタム再利用戦略を提供することを可能にするhttps://github.com/angular/angular/pull/13124によって新しいルータ用(2.3角度)。例えば
アンギュラドキュメントhttps://angular.io/api/router/RouteReuseStrategy
更新2を参照してください。この答えはずっと前に廃止され、ルータのバージョン用です。
現在のルータで行う方法については、https://angular.io/docs/ts/latest/guide/router.html#!#guardsを参照してください。
元
あなたの成分はCanReuseを実装し
routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) {
return true;
}
からtrue
を返した場合、コンポーネントは保持され、再利用の代わりに破壊され、再作成されます。
もう1つの方法は、共有サービスにデータを保存し、コンポーネントが再作成されたときにそこからデータをフェッチすることです。
'CanReuse'リンクが壊れています。 – Hubro
この回答が当てはまるルーターは、ずっと前から消えています。現在のルータで行う方法については、https://angular.io/docs/ts/latest/guide/router.html#!#guardsを参照してください。 –
新しいコンポーネントや古いコンポーネント(あなたは「戻る」ボタンを押して)同じコンポーネントタイプである場合にのみ、あなたがrouterCanReuse
を使用することができます https://github.com/angular/angular/issues/5275
にこの正確なシナリオ上の未解決の問題があります。
コンポーネントが異なるタイプの場合、Günterは唯一のオプションとして、共有サービスに状態を保存することを提案しました。
多くを検索した後、これは完全に私のために働いた: https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx –
@ PhilipEncどのようにあなたはその仕事をしましたか?それを使用するときにナビゲートすれば、私のルートは動作しません。私は遅延読み込みを使用しています。 – Chrillewoodz
私のアプリは遅延読み込みではありません。違いがあるかもしれません。 –
個別のコンポーネントに注入されたプロバイダとは対照的に、キーはアプリレベルのプロバイダ/サービスを持つことがあります。これについては、ここで少し説明します:http://stackoverflow.com/a/32807310。答えで説明したように、コンポーネントレベルのプロバイダは、ルートのコンポーネントが生成されるたびに作成されます。アプリケーションレベルのプロバイダ( 'bootstrap'の中で宣言されています)は一度作成されます(詳細については、このサイトを参照してください:http://www.syntaxsuccess.com/viewarticle/routing-in-angular-2)。あなたが良い解決策を考え出すなら、ここに投稿してください。 –