首页 文章

使用PrimeNG日历检测[(ngmodel)更改为选定日期

提问于
浏览
1

我有一个输入元素,其中包含使用PrimeNG日历创建的附加日期选择器 .

HTML部分

<p-calendar showAnim="slideDown" 
            id="calendar" 
            [showIcon]="true 
            [(ngModel)]="myDate" 
            (blur)="onBlurMethod($event)">
</p-calendar>

这里我使用了PrimeNG日历标签 . 我使用了一个隐藏的文本框,所以我可以选择更新的值,但它反映在文本框中 . 如何捕获任何事件的更新值?

<input type="hidden" id = "datePickerText" [ngModel]="myDate">

当用户通过直接输入input元素来更改日期时,我可以使用input元素的blur事件获取值,如上所示 . 但是当用户从datepicker更改日期时(即通过单击日历上的日期),不会调用模糊处理程序 .

如何检测通过 datepicker 进行的所选日期的更改,而不是通过键入输入元素?

3 回答

  • 1

    PrimeNG calendar有两个可以使用的事件: onBluronSelect .

    所以您可能想要更改代码以使用 onBlur 而不是 blur

    <p-calendar showAnim="slideDown" 
                id="calendar" 
                [showIcon]="true"
                [(ngModel)]="myDate" 
                (onBlur)="onBlurMethod($event)">
    </p-calendar>
    
  • 1

    另一种方法可以是使用 getset 属性直接检测更改 .

    private _startDate: Date;
    
    set startDate(date: Date)
    {
        this._startDate = date;
        alert('changed');
    }
    
    get startDate(): Date
    {
        return this._startDate;
    }
    

    无论你选择哪种方式,你都需要确保知道什么时候触发逻辑 - 并且它不会被不必要地运行 . 这种方式可能会变得很麻烦,并且会引起关注问题的分离,如果您因为触发而必须进行远程调用,则可能不建议这样做 .

  • 5

    你可以使用 (ngModelChange)="yourMethod()" .

相关问题