如何在 Angular 中 patchValue 时防止/停止 valuechanges 事件

Ahe*_*elp 1 rxjs angular angular-forms

您可以通过代码示例在这里找到我的问题 https://stackblitz.com/edit/angular-vhrppl?embed=1&file=src/app/app.component.html

我想在 patchValue 时阻止 valuechange 订阅,因为这两个值都订阅了 valuechange 并覆盖了计算结果。

我相信这应该是应用程序中的常见用例,是否有 RxJS 运算符来处理这种情况或有更好的设计?

cjd*_*187 6

Angular 的响应式表单有一个选项,您可以专门为此传递设置、修补等。

emitEvent:如果为 true 或未提供(默认),则当更新控件值时,statusChanges 和 valueChanges 可观察对象都会发出具有最新状态和值的事件。当为 false 时,不会发出任何事件。

这是 stackblitz 中的一个示例,已修改:

this.item1.patchValue(result * 0.5, {emitEvent: false})
Run Code Online (Sandbox Code Playgroud)

以下是更详细信息的文档链接: https ://angular.io/api/forms/FormControl#setvalue