DEMO
TS:
focusEffectivDate(name) {
$('.onlyDate').datetimepicker(
{ format: 'L' }).on('dp.change', (e) => {
const date = e.date.format('L');
if(name == 'effectiveDate') {
this.eoInfoForm.get('effectiveDate').setValue(date, { emitEvent: false });
} else if(name == 'expirationDate') {
this.eoInfoForm.get('expirationDate').setValue(date, { emitEvent: false });
} else {
this.eoInfoForm.get('updateReceivedDate').setValue(date, { emitEvent: false });
}
});
}
由于您在推荐答案内调用了datepicker的onChange函数,因此将创建onChange函数的多个实例(每次输入字段模糊时)。因此,尝试将日期选择器onChange事件移动到AfterviewInit。然后将该值存储在某个属性中,并使用该值设置反应形式值。
Component.ts
ngAfterViewInit(){
$('.onlyDate').datetimepicker(
{ format: 'L' }).on('dp.change', (e) => {
const date = e.date.format('L');
console.log(date);
this.date = date;
});
}
focusEffectivDate(name) {
if(name == 'effectiveDate') {
this.eoInfoForm.get('effectiveDate').setValue(this.date, { emitEvent: false });
} else if(name == 'expirationDate') {
this.eoInfoForm.get('expirationDate').setValue(this.date, { emitEvent: false });
} else {
this.eoInfoForm.get('updateReceivedDate').setValue(this.date, { emitEvent: false });
}
}
Forked Example