【问题标题】:Implementing a ControlValueAccessor but it's not propagating the value to the form实现 ControlValueAccessor 但它没有将值传播到表单
【发布时间】:2017-09-26 09:06:47
【问题描述】:

我正在使用 Angular 上的响应式表单,但在将更改从自定义组件传播到表单时遇到了麻烦。

例如,您可以在 plunkr 中看到一个使用 flatpickr 制作的日期输入组件。

https://plnkr.co/edit/okIjPb6aUcrzx3t7edae?p=info

你可以特别看到这段代码,当它设置属性 date 时,它应该将更改传播到外面的表单,但是不,表单没有被更新。

ngOnInit() {
 this.instance = flatpickr(this.elDate.nativeElement, {
   onChange: (selectedDates, dateStr, instance) => {
     this.date = selectedDates[0];
   }
 });
}
set date(val) {
    this._date = val;
    this.propagateChange(val);
}

plunkr 中还有一个反输入示例,它适用于 Angular 原生事件,并且可以完美运行。

但是在使用自定义事件的日期输入中(我认为)它不起作用。

我认为解决方案类似于旧 Angularjs 中的旧 applyAsync,但 Angular 承诺通过使用区域来解决这些问题,所以我不清楚。我想对这个问题有所启发。

【问题讨论】:

标签: angular typescript flatpickr


【解决方案1】:

您忘记将控件绑定到您的FormGroup

<date-input [date]="date" formControlName="date"></date-input>
                          ^^^^^^^^^^^^^^^^^^^
                              add this

Forked Plunker

【讨论】:

    猜你喜欢
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2018-06-05
    • 2019-09-01
    • 2019-12-02
    相关资源
    最近更新 更多