管道检测不带纯标志的数组中的更改

时间:2019-05-17 21:37:18

标签: angular

请参阅此StackBlitz。 打开控制台以查看我正在输出的日志:

https://stackblitz.com/edit/pipe-detect-change-array

这是我的应用程序的非常简单的版本。真正的应用程序将项目作为键/值对存储在BehaviorSubject({ [ITEM_ID]: item})中,我通过在可观察对象上运行管道来获得单个对象。该组件仅具有对所选项目的访问权限。

我的流程非常简单:更新对象时,我获取主题的值,修改已更改的内容,然后运行subject.next()。然后,这将触发所有订阅再次运行。您可以在控制台(更新数据)和屏幕(显示的阵列)中看到它。

问题:

  • 将项目添加到数组中运行虚拟管道(管道检测更改)
  • 修改数组中的对象运行虚拟管道
  • pure: false属性无法添加到我的应用程序的管道中,因为它们触发的次数太多,以至于杀死了Chrome

如何获取管道以再次检查阵列?

我想到的唯一解决方案是在更改数据时在组件或服务内部移动管道。我基本上会做类似的事情:

data$.pipe(
  map(res => {
    const pipe = new DummyPipe();
    res['children']= pipe.transform(res['children'])
    return res;
})
)

0 个答案:

没有答案