angular - Markera vissa datum i mat-calendar
Jag använder mat-calendar. Jag försöker markera vissa datum men jag kunde inte göra det. Det finns ingen ordentlig dokumentation för detta.
HTML
<mat-card>
<mat-calendar name="appointment_date" [selected]="selectedDate (selectedChange)="onSelect($event)"></mat-calendar>
</mat-card>
TS
onSelect(event){
this.selectedDate= event;
}
Vad jag behöver:
Svar #1
Du kan använda inmatningsbindningen
dateClasssom beskrivs i Angular Material-dokumentationen här. Observera: Detta kräver en Angular Material-version på minst 7.1.0
Ändra din mall till detta:
<mat-calendar [dateClass]="dateClass()" [selected]="selectedDate" (selectedChange)="onSelect($event)"></mat-calendar>
Och i din komponent lägger du till dateClass-funktionen som kommer att generera en funktion som kommer att returnera en typ av MatCalendarCellCssClasses, vilket kan vara så enkelt som en sträng som representerar CSS-klassen att tillämpa (eller en array av klassnamn):
dateClass() {
return (date: Date): MatCalendarCellCssClasses => {
if (date.getDate() === 1) {
return 'special-date';
} else {
return;
}
};
}
Och slutligen, i din styles.css, lägg till de klasser du vill använda:
.special-date {
background-color: red;
}
Här är en Stackblitz som färgar den första dagen i varje månad i rött.
Svar #2
Som ett komplement till Fabians svar, om du har problem med att se den markerade färgen och använder lazy loading-komponenter, kom ihåg att lägga till ::ng-deep framför klassen. Så här:
::ng-deep.special-date {
background-color: red;
}
Skål!
