【发布时间】:2019-01-01 18:34:02
【问题描述】:
处理引用类型数据(例如 json 数据)的最佳方法是绑定到组件。例如,
<my-component [data]="jsonData"></my-component>
.ts 中的jsonData= {'key1':'value1','key2','value2'}
现在,如果单击按钮,我将 jsonData 更改为
{'key1':'valueX','key2','value2'}
Angular 将无法检测到此更改,因此不会运行 ngOnChanges(),因为 Angular 仅检查数据绑定的引用是否已更改,因为结果视图不会被刷新。我该如何处理?
我可以在 ngDoCheck() 中添加逻辑来刷新我的视图,但它被调用了很多次。如果 json 很大,那么每次 ngDoCheck 运行时处理它可能是一项昂贵的操作。
我能想到的一个可能的解决方案是为该组件创建一个服务,并在单击按钮时将新的 json 传递给该服务,服务将使用更改的数据将该事件发布到我的组件和组件,监听事件服务,将使用该新数据刷新视图。
有没有更简单的方法来处理绑定到组件的 JSON/Array 更改?
【问题讨论】:
-
你试过两种方式的数据绑定[(data)]="jsonData" 吗?
-
不,但它会调用 ngOnChanges() 以便我可以更新我的视图吗?
标签: json angular data-binding