Я хочу выделить даты в matCalendar, но после отображения календаря даты, которые я передаю в значение [dateClass], не изменяются.
Я заметил, что если я нажму назад, чтобы перейти к предыдущему месяцу, значения обновятся
<mat-calendar [dateClass]="dateClass()" #calendar (selectedChange)="getDayRequestsList($event)">
</mat-calendar>
dateClass() {
return (date: Date): MatCalendarCellCssClasses => {
const highlightDate = this.datesToHighlight
.map(strDate => new Date(strDate))
.some(d => d.getDate() === date.getDate() && d.getMonth() === date.getMonth() && d.getFullYear() === date.getFullYear());
console.log(this.calendar);
return highlightDate ? 'highlight-date-class' : '';
};
}
getAllActivityList() {
this.calendarService.getAllCalendarDaysActivities().subscribe(activities => {
console.log(activities);
this.allActivities = activities; // assign all activities to the class property
this.selectedDayActivities = this.allActivities.filter(activity =>
new Date(activity.startEPOCHDate * 1000).toLocaleDateString() === this.selectedDate.toLocaleDateString());
this.datesToHighlight = []; // 1
this.allActivities.forEach(activity => { // 2
const _dateObj = new Date((activity.startEPOCHDate * 1000)); // convert back to date object
console.log(_dateObj);
// let _date = _dateObj.toISOString().substring(0, 10); // convert to date
this.datesToHighlight.push(_dateObj.toLocaleString());
});
});
}
Я ожидал, что даты из службы будут обновляться в календаре, но это не так.