Primeng 日历未更新 ngModel 中的日期值

问题描述 投票:0回答:1

我正在尝试使用带有这样的图标的

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
是日期字段。

angular primeng primeng-calendar
1个回答
0
投票

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)()"
© www.soinside.com 2019 - 2024. All rights reserved.