以编程方式触发controlValueAccessor的registerChange?

时间:2017-04-16 16:50:39

标签: angular

我正在构建一个Angular自定义表单组件,它是一个日期选择器。三个select框显示年,月和日。更改年份或月份时,将重新计算日期选项以提供所选月份中的确切天数。该组件将Date对象返回到父组件的FormGroup

这是问题所在。初始化组件时,其值为null。它保持null,直到用户更改select框之一,调用registerOnChange(),从而设置控件的值。通过Date返回的ControlValueAccessor对象是通过三个select框的值中的简单函数计算出来的。现在,如何在不用实际更改任何内容的情况下以编程方式调用registerOnChange()?除非发生这种情况,否则控件的值为null

1 个答案:

答案 0 :(得分:0)

好的,我帮了自己。似乎registerOnChange()在init上自动运行。可以像这样插入所需的值:

onChange: any = () => { };

registerOnChange(fn) {
    this.onChange = fn;
    this.onChange(this.calcDate());
}