代码之家  ›  专栏  ›  技术社区  ›  maury844

跳过程序更改窗体控件的值更改

  •  0
  • maury844  · 技术社区  · 8 年前

    我有一个表格来登记一个事件,我要求一个日期,时间,如果它复发(每天,每周,每月或根本没有)。

    我还为用户设置了另一个输入,以指定重复结束的时间。问题是,有两种方法可以“结束这种复发”。我有一个“重复”(如果你想每周重复两周),但我也有一个 datepicker 如果您想指定结束日期(即您希望它每天重复到9月1日)。

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

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

    问题是,由于我有一个监听器来监听两个输入的更改,当用户更改其中一个输入时,我会(以编程方式)更改另一个输入的值,这会触发 valueChanges 在输入上也一样,所以它一直在来回移动。

    在所有这些介绍之后,您是否可以建议将“用户所做的”更改与我所做的更改区别开来 inputValueChanges ?

    1 回复  |  直到 8 年前
        1
  •  2
  •   JayChase    8 年前

    使用更新窗体控件值时 setValue 可以将emitEvent选项设置为false。这将阻止valueChanges在更改时启动。

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