跳过程序对FormControl的valueChanges所做的更改

时间:2018-08-03 21:13:01

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

我有一个注册事件的表格,我要求一个日期,时间以及事件是否重复发生(每天,每周,每月或完全没有)。

我还设置了另一个输入供用户指定重复结束的时间。问题是有两种“终止复发”的方法。我有一个“重复次数”(以防万一,例如,您想每周重复一次该活动,持续两周),但是如果您想指定结束日期(例如,您希望它重复一次),我也有一个datepicker每天,直到9月1日。

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

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

问题是,由于我有两个输入的更改侦听器,因此当用户更改一个输入时,我会(以编程方式)更改另一个输入的值,并且也会触发该输入上的valueChanges ,因此它会不断地来回移动。

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

1 个答案:

答案 0 :(得分:2)

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

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