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

时间:2016-07-25 13:46:47

标签: jquery angular typescript primeng primeng-calendar

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

HTML部分

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

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

datepicker

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

如何通过[$-10409]m-d-yyyy h:mm:ss AM/PM检测所选日期的更改,而不是输入输入元素?

3 个答案:

答案 0 :(得分:5)

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

因此,您可能希望更改代码以使用onBlur代替blur

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

答案 1 :(得分:2)

您可以使用(ngModelChange)="yourMethod()"

答案 2 :(得分:1)

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

private _startDate: Date;

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

get startDate(): Date
{
    return this._startDate;
}

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