angular - 跳过 FormControl 的 valueChanges 中的程序更改

标签 angular typescript angular-reactive-forms angular-forms

我有一个注册事件的表格,我要求提供日期、时间以及是否重复(每天、每周、每月或根本不重复)。

我还为用户设置了另一个输入来指定重复周期结束的时间。问题是有两种方法可以“结束这种复发”。我有一个“# of repetitions”(如果您想每周重复该事件两周),但我也有一个 datepicker 以防您想要指定结束日期(例如您想要它每天重复一次,直到 9 月 1 日)。

当其中一个输入的值发生变化时,我会触发一个函数来更新另一个,以使其保持一致

例如,如果我指定我希望它每天重复并且我设置了 5 次,那么我的日期选择器将显示距离原始日期 5 天的日期,反之亦然。

问题是,因为我有一个监听两个输入的变化,当用户改变一个时,我改变另一个的值(以编程方式)并且触发 valueChanges输入也是如此,所以它一直来回。

在所有这些介绍之后,您有什么方法可以建议区分“用户所做的”更改和我在 inputValueChanges 上所做的更改吗?

最佳答案

当您使用 setValue 更新表单控件值时您可以将 emitEvent 选项设置为 false。这将阻止 valueChanges 触发更改。

yourControl.setValue(newValue, { emitEvent: false });

关于angular - 跳过 FormControl 的 valueChanges 中的程序更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51680135/

相关文章:

javascript - 返回 Angular react 形式的所选属性内的所有对象值

angular - NgModule 的提供程序无效 'AppModule'

javascript - 过滤嵌套对象数组

angular - 如何创建自动完成 - Angular 5

angular - NGRX 选择器在商店可用之前请求数据

javascript - TypeScript setTimeout 循环传递此错误

angular - 我应该将什么样的对象传递给 `FormBuilder.group()` 才能正确实例化字段?

javascript - 如何使用接口(interface)在 typescript 中添加两个数字

typescript - ThreeJs OBJLoader + MTLLoader : materials load but don't show

angular - 必须在索引 : 1 - Error 处为表单控件提供一个值