データテーブルコンポーネント(angular2-data-table)を使用して、プロジェクトをAngularの従来の変更検出からOnPush
に変更し、最適化されたレンダリング速度を得ました。Angular2 ngFor ArrayMutationsのOnPush変更検出
新しい変更検出ストラテジが実装された後、オブジェクトのプロパティの更新などのデータオブジェクトが変更されたときに、テーブルが更新されていないことを参照するバグがファイルされました。参照:https://github.com/swimlane/angular2-data-table/issues/255。インライン編集やストック・ティッカーのような大規模データ・コレクション内の単一のプロパティーへの外部データ変更などのために、このタイプのニーズを強力に使用することができます。問題を解決するための努力において
は、我々はtrackByProp
と呼ばれるカスタムtrackByプロパティチェッカーを追加しました。参考:commit。残念ながら、この解決策では問題は解決しませんでした。
ライブリロード中のdemo pageでは、上記のコミットで参照されているデモが表示されますが、これをクリックすると変更検出がトリガーされるまでテーブルは更新されません。
部品の構造のようなものです。これらの構成要素のすべてがOnPush
を実装
Table > Body > Row Group > Row > Cell
。私はhereのようにページの再計算をトリガする行セッタのgetters/settersを使用しています。
このパターンを実装している人には、変更の検出をOnPush
残しておきたいのですが、複数のコンシューマを持つオープンソースプロジェクトでは、画面上に表示される行の値に対して何らかのカスタムチェック機能を主張できます。
、trackBy
は、行のセル値の変化の検出をトリガされていないと述べたことすべてが、これを実現する最良の方法は何ですか?
質問は、問題を再現することを可能にするコードを含める必要があります。 –