我正在尝试使用带有这样的图标的
p-calendar
<p-calendar
[showOnFocus]="false"
[locale]="sw"
dateFormat="yy-mm-dd"
[style]="{'width': '120px'}"
[showIcon]="true"
[(ngModel)]="abc.efg.fromDate"
[check]="checkDate()"
[keepMessage]="true"
[keepInvalid]="true"
(onSelect)="dateOnSelect($event)"
alwaysShow></p-calendar>
应用程序组件中 checkDate() 的实现如下所示
checkDate(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } => {
console.log('date from : ', this.abc.efg.fromDate);
// other implementation
}
}
我面临的问题是,每当我选择一个日期(通过单击图标)时,我都会在 checkDate() 中收到调用,并且
this.abc.efg.fromDate
的值不是我从日期选择器中选择的值,事实上它是日期字段中的前一个值。
我该如何解决这个问题?假设即使我使用图标,ngModel 也应该具有更新的值。
PS:
this.abc.efg.fromDate
是日期字段。
primeng
可能会在其范围/上下文中执行该函数,从包代码中,您的变量未定义,因此,要克服这个问题,您只需进行绑定即可,这将确保该函数在您的控制器中执行背景/范围
<p-calendar
[showOnFocus]="false"
[locale]="sw"
dateFormat="yy-mm-dd"
[style]="{'width': '120px'}"
[showIcon]="true"
[(ngModel)]="abc.efg.fromDate"
[check]="checkDate().bind(this)"
[keepMessage]="true"
[keepInvalid]="true"
(onSelect)="dateOnSelect($event)"
alwaysShow></p-calendar>
您也可以尝试这种变体,其中之一可能会起作用!
[check]="checkDate.bind(this)()"