typescript – Angular2使用值等价或引用相等来检测更改?

前端之家收集整理的这篇文章主要介绍了typescript – Angular2使用值等价或引用相等来检测更改?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Angular2-RC.1,当我设置具有大数据的组件时,我发现性能很差.
我有一个表格组件(包装Handsontable),我公开了一个名为“data”的可绑定Input属性.
属性通常绑定到一个大型数组(大约十万行).

当我设置我的大型数据集时,更改检测会导致对主机组件(而不是输入属性的所有者)中的整个数组进行值等效测试.

@Component({
    selector: "ha-spreadsheet",template: "<hot-table [data]="data"></hot-table>",directives: [ HotTable ],encapsulation: ViewEncapsulation.Emulated
})
export class Spreadsheet implements OnActivate {
    data: { rows: Array<Array<number>> };
    load(service) { this.data = service.getLargeDataSet(); }
}

在这里,我展示了一个callstack,显示在整个数据上启动了变化检测. (粗体方法是我的主机组件的运行时自动生成的更改检测功能),而不是简单地比较引用.

callstack

这是故意的行为吗?

解决方法

我自己找到了答案.
独立更改检测过程是比较引用(这是它的设计行为).

但是,如果未启用生产模式,则其他断言会对组件的数据执行等效性测试.

猜你在找的Angularjs相关文章