Angular:将两个表单控件绑定到同一个模型

色林巴

我使用ControlValueAccessor界面创建了两个控件- 一个日期选择器和一个年龄选择器 - 并希望使用相同的值将它们绑定在一起。这些代表退休日期和年龄,用户应该能够修改一个并查看另一个输入更新。

我通过订阅form.valueChangesobservable来做到这一点,就像这样:

this.form.valueChanges.subscribe((val) => {
  if (val.retirementDate !== this.currentDatePickerValue) {
    // retirement date changed
    this.currentDatePickerValue = val.retirementDate;
    setTimeout(() => this.retirementAgeCtrl.setValue(this.currentDatePickerValue));
  } else if (val.retirementAge !== this.currentAgePickerValue) {
    // retirement age changed
    this.currentAgePickerValue = val.retirementAge;
    setTimeout(() => this.retirementDateCtrl.setValue(this.currentAgePickerValue));
  }
});

没有setTimeout()s,这会导致堆栈异常,但有了它们就可以了。不幸的是,它的效率不如预期,因为当任一输入更改时,此代码会运行十几次或更多次。

我怎样才能做到这一点,以便代码只根据需要执行多少次?

阿西什·兰詹

emitEvent选项传递为false

发射事件:当为真或不提供时(默认值),statusChanges 和 valueChanges observables 都会在控件值更新时发出具有最新状态和值的事件。如果为 false,则不发出任何事件。

this.form.valueChanges.subscribe((val) => {
  if (val.retirementDate !== this.currentDatePickerValue) {
    // retirement date changed
    this.currentDatePickerValue = val.retirementDate;
    this.retirementAgeCtrl.setValue(this.currentDatePickerValue, {emitEvent: false})
  } else if (val.retirementAge !== this.currentAgePickerValue) {
    // retirement age changed
    this.currentAgePickerValue = val.retirementAge;
    this.retirementDateCtrl.setValue(this.currentAgePickerValue, {emitEvent: false})
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以将两个符号绑定到同一个变量吗?

来自分类Dev

将两个输入绑定到同一模型

来自分类Dev

绑定到同一属性 WPF 的两个控件

来自分类Dev

如何使用OData模型将两个数据属性直接绑定到一个控件属性中?

来自分类Dev

为什么两个绑定到同一个函数会返回不同的值

来自分类Dev

AngularJs-使用两个输入将一个ng模型绑定到指令

来自分类Dev

当我有一个带有两个 FK 的模型到同一个模型时解决 FK 向后关系

来自分类Dev

两个外键指向同一个表/模型

来自分类Dev

在 DRF 中将两个模型混合到同一个端点

来自分类Dev

MySQL的:使用两个外键到同一个表

来自分类Dev

如何用木偶包装两个ItemView到同一个div中?

来自分类Dev

将多个 TreeView 绑定到同一个 ItemSource

来自分类Dev

将多个 WPF 用户定义的组合框绑定到同一个 Observable 集合

来自分类Dev

将控件绑定到两个属性

来自分类Dev

将属性绑定到两个不同的控件

来自分类Dev

具有来自不同模型的数据但显示在同一个视图上的两个部分视图

来自分类Dev

加入同一个表中的两个外键引用同一个主键

来自分类Dev

两个 div,一个紧挨着,在同一个角落

来自分类Dev

一页上的两个表单,使用ViewModel绑定到不同的模型

来自分类Dev

一页上的两个表单,使用ViewModel绑定到不同的模型

来自分类Dev

如何通过仅输入同一个窗口小部件来将文本输入到两个文本窗口小部件中

来自分类Dev

如何有条件地将两个不同的字符串插入到同一个模板中?

来自分类Dev

是否可以在 Laravel 中的同一模型上建立多对多变形关系?(两个由关系变形的在同一个模型中)

来自分类Dev

如何将数据从一个容器快速传递到另一个容器,而这两个容器都迅速地嵌入了同一个uiviewcontroller中?

来自分类Dev

如何在 Angular 4 中的同一个 ngFor 中使用两个不同的索引变量

来自分类Dev

MIPS:将两个连续的“加载字”指令放入同一个寄存器是否合法?

来自分类Dev

为什么打开时将两个单独的面板图标归为同一个图标

来自分类Dev

MIPS:将两个连续的“加载字”指令放入同一个寄存器是否合法?

来自分类Dev

如何将项目链接到同一个 C 静态库的两个不同版本?

Related 相关文章

  1. 1

    可以将两个符号绑定到同一个变量吗?

  2. 2

    将两个输入绑定到同一模型

  3. 3

    绑定到同一属性 WPF 的两个控件

  4. 4

    如何使用OData模型将两个数据属性直接绑定到一个控件属性中?

  5. 5

    为什么两个绑定到同一个函数会返回不同的值

  6. 6

    AngularJs-使用两个输入将一个ng模型绑定到指令

  7. 7

    当我有一个带有两个 FK 的模型到同一个模型时解决 FK 向后关系

  8. 8

    两个外键指向同一个表/模型

  9. 9

    在 DRF 中将两个模型混合到同一个端点

  10. 10

    MySQL的:使用两个外键到同一个表

  11. 11

    如何用木偶包装两个ItemView到同一个div中?

  12. 12

    将多个 TreeView 绑定到同一个 ItemSource

  13. 13

    将多个 WPF 用户定义的组合框绑定到同一个 Observable 集合

  14. 14

    将控件绑定到两个属性

  15. 15

    将属性绑定到两个不同的控件

  16. 16

    具有来自不同模型的数据但显示在同一个视图上的两个部分视图

  17. 17

    加入同一个表中的两个外键引用同一个主键

  18. 18

    两个 div,一个紧挨着,在同一个角落

  19. 19

    一页上的两个表单,使用ViewModel绑定到不同的模型

  20. 20

    一页上的两个表单,使用ViewModel绑定到不同的模型

  21. 21

    如何通过仅输入同一个窗口小部件来将文本输入到两个文本窗口小部件中

  22. 22

    如何有条件地将两个不同的字符串插入到同一个模板中?

  23. 23

    是否可以在 Laravel 中的同一模型上建立多对多变形关系?(两个由关系变形的在同一个模型中)

  24. 24

    如何将数据从一个容器快速传递到另一个容器,而这两个容器都迅速地嵌入了同一个uiviewcontroller中?

  25. 25

    如何在 Angular 4 中的同一个 ngFor 中使用两个不同的索引变量

  26. 26

    MIPS:将两个连续的“加载字”指令放入同一个寄存器是否合法?

  27. 27

    为什么打开时将两个单独的面板图标归为同一个图标

  28. 28

    MIPS:将两个连续的“加载字”指令放入同一个寄存器是否合法?

  29. 29

    如何将项目链接到同一个 C 静态库的两个不同版本?

热门标签

归档