Я не уверен, почему, но каким-то образом ваш пользовательский шаблон дня (ng-template let-date="date"
), по-видимому, препятствовал отображению / помечению отключенных дат как отключенных в календаре всплывающих окон.Вы могли перезаписать некоторые свойства случайно.
Я не подробно изучил ваш код, но я попробовал следующее, и, похоже, это работает.
Во-первых, в вашем component.html я использовал свойство disabled
, которое является частью DayTemplateContext .После чего я установил класс text-muted
как true для disabled
дат.Это даст серый цвет для дат disabled
.Убедитесь, что ваш
<ng-template #t let-date="date" let-focused="focused" let-disabled="disabled">
<span class="custom-day"
[class.text-muted]="disabled"
[class.range]="isFrom(date) || isTo(date) || isInside(date) || isHovered(date)"
[class.faded]="isHovered(date) || isInside(date)"
(click)="onDateSelection(date)"
(mouseenter)="hoveredDate = date"
(mouseleave)="hoveredDate = null">
{{ date.day }}
</span>
</ng-template>
В ваших component.ts, я внес следующие изменения в ваш метод onDateSelection()
.Это не очень элегантно, но пока делает свою работу.Я в основном обернул его оператором if, чтобы проверить, что дата 13-го числа (которая является датой отключения).Это предотвратит выбор самой даты.
onDateSelection(date: NgbDateStruct) {
let parsed = '';
if (date.day!==13) {
.
.
// rest of your code
}
}
РЕДАКТИРОВАНИЕ: Спасибо @Eliseo за советы, и да, мы можем просто добавить проверку для disabled
в событии click.Таким образом, нет необходимости в этом операторе if в вашем операторе onDateSelection ().Я обновил демо, чтобы отразить изменения.
<ng-template #t let-date="date" let-focused="focused" let-disabled="disabled">
<span class="custom-day"
[class.text-muted]="disabled"
[class.range]="isFrom(date) || isTo(date) || isInside(date) || isHovered(date)"
[class.faded]="isHovered(date) || isInside(date)"
(click)="!disabled && onDateSelection(date)"
(mouseenter)="hoveredDate = date"
(mouseleave)="hoveredDate = null">
{{ date.day }}
</span>
</ng-template>
Вы можете обратиться к моей демо здесь