angular / components

Component infrastructure and Material Design components for Angular
https://material.angular.io
MIT License
24.23k stars 6.7k forks source link

bug(MatCalendar): updating dateClass does not update calendar view #28737

Open digaus opened 4 months ago

digaus commented 4 months ago

Is this a regression?

The previous version in which this bug was not present was

No response

Description

We have displayed a calendar and when changing the month we load data from the backend to highlight certain cells.

We tried to update the dateClass using observables together with the async pipe which did not work since the calendar is not updating when the reference changes.

A workaround was to call setLocale of the date adapter which triggers a rerender.

I consider this a bug and not a feature because it is not mentioned anywhere that this cannot be done and dateFilter also can be updated asynchronously.

Reproduction

StackBlitz link: Steps to reproduce:

Expected Behavior

Update calendar view on dateClass change

Actual Behavior

calendar view does not update when dateClass changes.

Environment

mmalerba commented 4 months ago

It looks like the classes are calculated when the cell is first created and never updated if the function changes later: https://github.com/angular/components/blob/main/src/material/datepicker/month-view.ts#L533-L545, so this does indeed feel like a bug