angular - 带有 { emitEvent : false } triggers valueChanges on Angular 4 formgroup 的补丁值

标签 angular typescript ionic-framework angular2-formbuilder angular-reactive-forms

我有一个 formbuilder 组,正在监听 valueChanges 的变化并触发保存功能,然后触发表单上的刷新功能:

 this.ticketForm.valueChanges.debounceTime(1000).distinctUntilChanged()
 .subscribe(data => {
   this.saveTicket();
   this.refreshTicket();
 })

然后我重新加载表单并使用 patchValue 将数据重新分配到表单字段(以及页面上的其他地方,特别是更改日志),例如:

    this.ticketForm.patchValue(ticket, { emitEvent: false });

然而,这会导致无限循环保存表单,尽管 emitEvent : false。

这是 Angular 4/Ionic 3 的错误还是我的误解?

最佳答案

尝试以这种方式添加 onlySelf: trueemitEvent: false:

this.ticketForm.patchValue(ticket, {emitEvent: false, onlySelf: true});

关于angular - 带有 { emitEvent : false } triggers valueChanges on Angular 4 formgroup 的补丁值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241103/

相关文章:

css - 如何设置 mat-option 文本的样式以在悬停在每个 mat-option 文本上时在 mat-select 面板外获取文本

angular - 当 Angular 中的条件错误(静态用户名和密码)时,在登录按钮下显示错误消息?

javascript - 如何正确地在存储中保存状态并检索它

node.js - 用 Angular 突出显示?

angular - 尝试在页面上呈现 Google map 时出错

javascript - cordova-dialogs-plugin 中的数字输入

android - ionic : Error while running application in my android device

node.js - 如何在 Angular 中选中多个复选框,其中复选框值位于带有 csv 的数据库的一列中?

javascript - 如何将数据从一个组件传递到另一个组件

node.js - Eslint 说 Typescript 应用程序中的所有枚举都是 "already declared in the upper scope"