繁体   English   中英

Angular2 - Iterable Differ没有检测到变化

[英]Angular2 - Iterable Differ doesn't detect change

我正在使用来自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'
        }
    ]
}

这取决于您想要检测的内容。 使用IterableDiffers类,您将“仅”检测是否:

  • 元素将添加到您的数组中
  • 元素将从您的数组中删除

但它不会检测是否在数组元素内完成更新。

这个问题可能让你感兴趣:

有关用例,请参阅此plunkr: https ://plnkr.co/edit/wn6mTEcvrW2vh1ko5Ji5?p = preview。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM