我正在使用来自Angular2的可迭代差异来检测我的数据的变化。然后我想重新加载我的观点。但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我的服务器)。 shift / push thingy工作得很好,数据就在那里。它只是没有被检测到。 NTWDATA:
{
labels: ["","","","","","",""],
datasets: [
{
label: 'Server Response Time in ms',
data: [65, 59, 80, 81, 56, 55, 40],
fill: false,
borderColor: '#FF0303'
}
]
}
答案 0 :(得分:4)
这取决于您想要检测的内容。使用IterableDiffers
类,您将“仅”检测是否:
但它不会检测是否在数组的元素内完成更新。
这个问题可能让你感兴趣:
请参阅此plunkr了解用例:https://plnkr.co/edit/wn6mTEcvrW2vh1ko5Ji5?p=preview。