angular / components

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

Form field aria-describedby fixes #30015

Closed crisbeto closed 2 weeks ago

crisbeto commented 2 weeks ago

Includes the following fixes for how we deal with ariab-describedby in the form field:

fix(material/form-field): avoid touching the DOM on each state change

Currently we set the aria-describedby every time the state of the form control changes. This is excessive, because it only needs to happen if the error state or userAriaDescribedBy change.

fix(material/input): preserve aria-describedby set externally

Currently there are two sources of an aria-describedby for a matInput: the IDs of the hint/error message in the form field and any custom ones set through aria-describedby. This is insufficient, because the ID can also come from a direct DOM manipulation like in the AriaDescriber.

These changes tweak the logic to try and preserve them, because currently they get overwritten.

Fixes #30011.