私はデータ テーブル コンポーネント ( angular2-data-table ) プロジェクトを持っており、プロジェクトを Angular の従来の変更検出からOnPush
最適化されたレンダリング速度に変更しました。
新しい変更検出戦略が実装されると、オブジェクトのプロパティの更新など、データ オブジェクトが変更されたときにテーブルが更新されないことを参照するバグが報告されました。 255 . インライン編集や、株価情報などの大規模なデータ コレクション内の 1 つのプロパティに対する外部データの変更など、この種のニーズに対して強力なユース ケースを作成できます。
この問題を解決するために、 というカスタム trackBy プロパティ チェッカーを追加しましたtrackByProp
。参考:コミット。残念ながら、このソリューションでは問題は解決しませんでした。
ライブ リロードの下のデモ ページでは、上記のコミットで参照されているデモが実行されていることを確認できますが、クリックするまでテーブルは更新されず、変更検出がトリガーされます。
コンポーネントの構造は次のようなものです。
Table > Body > Row Group > Row > Cell
これらのコンポーネントはすべて実装されてOnPush
います。ここに示すように、行セッターでゲッター/セッターを使用してページの再計算をトリガーしています。
このパターンを実装する人のために変更検出を続けたいと思いますがOnPush
、複数のコンシューマーを含むオープンソース プロジェクトとして、画面に表示される行の値に対する何らかのカスタム チェック機能について議論することができます。
とは言っても、trackBy
行セル値の変更検出をトリガーしていません。これを達成するための最良の方法は何ですか?