Это простой взлом для вашего требования.
В вашем component.html используйте минимальную и максимальную дату и метод (onMonthChange)
для обновления минимального и максимального значения даты, когда пользователь меняет месяц. Трюк - это просто сделать минимальную и максимальную дату равной последнему дню месяца.
<p-calendar [(ngModel)]="value" tabindex="0" [maxDate]="maxDateValue"
[minDate]="minDateValue" readonlyInput="true"
(onMonthChange)="onMonthChange($event)">
</p-calendar>
А в файле component.ts используйте следующий код:
public maxDateValue: Date;
public minDateValue: Date;
ngOnInit() {
this.setMinMaxDate();
}
setMinMaxDate() {
var nowdate = new Date();
this.maxDateValue = new Date(nowdate.getFullYear(), nowdate.getMonth() + 1, 0);
this.minDateValue = new Date(nowdate.getFullYear(), nowdate.getMonth() + 1, 0);
}
// method to handle month change.
onMonthChange(e:any) {
this.minDateValue = new Date(e.year, e.month, 0);
this.maxDateValue = new Date(e.year, e.month, 0);
}
Вы должны подумать, почему во время инициализации я использую nowdate.getMonth() + 1
Но внутри onMonthChange
только e.month
, не добавляя + 1.
Вам нужно пройти через эту статью найти последнюю и первую дату месяца статью о том, как получить последнюю и первую дату месяца, распечатать значения месяца в консоли и увидеть различия. Тогда вы легко поймете.