【问题标题】:Angular FormArray content updated after push/removeAt using OnPush使用 OnPush 在 push/removeAt 后更新 Angular FormArray 内容
【发布时间】:2020-12-27 17:18:12
【问题描述】:

我有一个组件正在使用OnPush 更改检测。
在这个组件中,我有一个 FormArray(在 FormGroup 内部)。
我有两个按钮,在FormArray 中添加(push)或删除(removeAtFormGroup
我希望由于OnPush 更改检测,更改不可见(根FormGroup 参考没有更改)
但是该组件可以完美地检测到更改。

我找到了一个类似的示例 (StackBlitz),其中手动调用了 changeDetection,但是当我删除这部分代码时,它仍然可以正常工作。

我检查了Angular source,我的猜测是updateValueAndValidity 函数调用正在进行更改检测,这StackOverflow comment 也证实了这一点。

那么有人可以解释一下它是如何工作的吗?
我不想在 Angular 更新后破坏我的应用程序。

提前致谢!

【问题讨论】:

    标签: angular angular2-changedetection formarray


    【解决方案1】:

    即使使用OnPush 策略,当组件中的事件处理程序触发时(如您的情况下的单击事件处理程序),Angular 也会自动检查组件中的更改。如果您不在点击处理程序中调用removeAtpush,而是在setTimeout 中调用,则更改将不可见。

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2021-07-14
      • 2021-08-04
      • 2018-06-23
      • 2022-12-27
      • 2019-11-02
      相关资源
      最近更新 更多