angular2 Typescriptアプリケーションでは、ルータを使用します。 私たちのコンポーネントはかなり一般的であり、ルータから取得するパラメータに基づいて動作が大幅に変化します。Angular2に表示するたびにコンポーネントを再作成させる方法
アプリケーションは初期段階で開発されており、私が言及している動作は最近観察されています。私はそれがコードの変化かライブラリの1つの急激な変化のためかどうかは分かりません。
List
という名前のコンポーネントを考えます。それは表示すべきエンティティタイプのようなコンテキスト(ルート、ラッピングコンポーネントなど)からいくつかの情報を取得します。
ルートを変更すると、List
コンポーネントは再インスタンス化されませんが、そのパラメータは更新されます。 ngOnInit
にこれらのパラメータを使用してコンポーネントをセットアップするので、後で変更しても効果はありません。
私はこの問題を回避するために変更検出を使用できることを知っていますが、むしろそうではありません。その理由は、これにより、開発者が回帰バグを導入するのがはるかに容易になるということです(例えば、人々のリストへの移動、何かの実行、注文リストへの移動、存在しないはずのものなど) 、テストし、再現する。彼らは生産に漏れる可能性が非常に高いです。
ルートが変更されたときにリストコンポーネントを再作成するにはどうすればよいですか。
その他の観測:ルータでは、Listコンポーネントを表示しないルートに移動してListに戻ると、コンポーネントが再インスタンス化されます。
最近のアルファではrouterCanReuseが使用されていましたが、何が起こっているのかわかりません...ルータ3xでは実装されていません。https://github.com/angular/angular/issues/9811 – Sasxa