我有一个数据表组件(angular2-data-table)项目,我们将项目从 Angular 的传统变更检测更改OnPush
为优化渲染速度。
实施新的变更检测策略后,当数据对象发生突变(例如对象的属性更新)时,引用表未更新的错误被提交参考:https ://github.com/swimlane/angular2-data-table/issues/ 255 . 可以为这种类型的需求创建一个强大的用例,例如在线编辑或对大型数据集合(如股票代码)中的单个属性进行外部数据更改。
为了解决这个问题,我们添加了一个自定义 trackBy 属性检查器,名为trackByProp
. 参考:提交。不幸的是,这个解决方案并没有解决问题。
在实时重新加载下的演示页面上,您可以看到上述提交中引用的演示正在运行,但在您单击之前不会更新表,从而触发更改检测。
组件的结构类似于:
Table > Body > Row Group > Row > Cell
所有这些组件都实现了OnPush
. 我在行设置器中使用 getter/setter 来触发页面重新计算,如此处所示。
我们希望OnPush
为那些实现这种模式的人提供变更检测,但是,作为一个拥有多个消费者的开源项目,人们可能会争论某种自定义检查功能,以检查屏幕上的可见行值。
综上所述,trackBy
没有触发行单元格值中的更改检测,实现此目的的最佳方法是什么?