我正在使用Angular2的可迭代Differs来检测我的数据更改。然后,我想重新加载我的视图。但是different.diff总是返回“ null”,我也不知道为什么。
constructor(differs: IterableDiffers) { this.differ = differs.find([]).create(null); } @Input() data: any; ngDoCheck() { var changes = this.differ.diff(this.data.datasets); if (changes && this.initialized) { //doreload }
编辑:
this.pingService.pingStream.subscribe(ping => { this.ping = ping; console.log(this.ping); NTWDATA.datasets[0].data.shift(); NTWDATA.datasets[0].data.push(this.ping);
PingService每5秒返回一个数字(对服务器进行ping操作)。移位/推送thingy工作正常,数据在那里。只是没有被发现。NTWDATA:
{ labels: ["","","","","","",""], datasets: [ { label: 'Server Response Time in ms', data: [65, 59, 80, 81, 56, 55, 40], fill: false, borderColor: '#FF0303' } ] }
Thierry Temp.. 5
这取决于您要检测的内容。使用IterableDiffers
该类,您将“仅”检测是否:
元素添加到您的数组中
元素从数组中删除
但是它不会检测是否在数组的元素内完成了更新。
这个问题可能会让您感兴趣:
检测Angular2中数组内部对象的变化
有关用例,请参见以下插件:https ://plnkr.co/edit/wn6mTEcvrW2vh1ko5Ji5?p=preview 。
这取决于您要检测的内容。使用IterableDiffers
该类,您将“仅”检测是否:
元素添加到您的数组中
元素从数组中删除
但是它不会检测是否在数组的元素内完成了更新。
这个问题可能会让您感兴趣:
检测Angular2中数组内部对象的变化
有关用例,请参见以下插件:https ://plnkr.co/edit/wn6mTEcvrW2vh1ko5Ji5?p=preview 。