加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 17:01:37 所属栏目:安全 来源:网络整理
导读:我正在使用Angular2-RC.1,当我设置具有大数据的组件时,我发现性能很差. 我有一个表格组件(包装Handsontable),我公开了一个名为“data”的可绑定Input属性. 此属性通常绑定到一个大型数组(大约十万行). 当我设置我的大型数据集时,更改检测会导致对主机组件(而
我正在使用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

这是故意的行为吗?

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读