跳过 FormControl 的 valueChanges 中的程序更改

Skip the program-made changes in valueChanges for FormControl

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

我还为用户设置了另一个输入来指定重复周期结束的时间。问题是"ending that recurrence"有两种方式。我有一个“重复次数”(如果您想每周重复该事件两周),但我也有一个 datepicker 以防您想要指定结束日期(即您希望它重复每天直到 9 月 1 日)。

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

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

问题是,因为我有一个侦听器用于两个输入的更改,当用户更改一个时,我更改另一个的值(以编程方式)并触发该输入上的 valueChanges以及,所以它一直来回。

看完这些介绍后,您有什么方法可以建议区分 "user-made" 更改和我在 inputValueChanges 上所做的更改吗?

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

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