2

我有一个带有使用 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而不是通过输入输入元素对选定日期进行的更改?

4

3 回答 3

6

PrimeNG 日历有两个您可以使用的事件:onBluronSelect.

所以你可能想改变你的代码来使用onBlur而不是blur

<p-calendar showAnim="slideDown" 
            id="calendar" 
            [showIcon]="true"
            [(ngModel)]="myDate" 
            (onBlur)="onBlurMethod($event)">
</p-calendar>
于 2016-07-25T13:52:46.763 回答
3

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

于 2017-06-30T14:16:04.173 回答
1

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

private _startDate: Date;

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

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

无论您选择哪种方式,您都需要确保知道何时触发逻辑 - 并且不会不必要地运行它。这种方式可能会变得很麻烦并且存在关注点分离问题,并且如果您必须因触发器而进行远程调用,则可能不建议这样做。

于 2016-12-17T02:20:41.560 回答