Показывает важную информацию на странице. Может содержать подсказку, сигнализировать об изменении статуса или наличии проблемы.

У алертов два размера. Обычный размер используется по умолчанию; передайте [compact]="true" для компактного размера, который применяется в стеснённых местах — поповерах и формах.

По умолчанию алерты оформлены сдержанно и выделяются только цветом иконки. Если блок теряется на экране, то можно привлечь к нему внимание с помощью варианта с цветным фоном.

Свойство alertColor задаёт статус: error, warning, success или info (по умолчанию). Оно определяет фон в цветном варианте и автоматически окрашивает спроецированную иконку статуса, у которой не задан явный [color]: иконка окрашивается в соответствующий статусу цвет, кроме info — она окрашивается в contrast. Задайте [color] на иконке сами, чтобы отказаться от автоокраски.

Блок можно скрыть по кнопке-иконке в углу алерта. Алерт не скрывает себя сам — подпишитесь на событие (closed) (возникает при активации кнопки закрытия) и удалите или скройте алерт в своём коде. Если система сообщает о проблеме, в этом случае алерт отображается постоянно и пользователь не может его закрыть.

В алерте можно расположить ссылки и кнопки, можно отказаться от иконки и заголовка. В объемном оповещении текст можно разбивать на абзацы.

  • Статичные алерты. Хост применяет только CSS-классы и не задаёт ARIA-роль — это правильно для алерта, отрисованного вместе со страницей: принудительный role="alert" заставил бы скринридер неожиданно зачитать содержимое при загрузке страницы.
  • Динамически показываемые алерты. Когда алерт появляется в ответ на действие пользователя (ошибка валидации, изменение статуса), добавьте role="alert" для срочных сообщений или aria-live="polite" с aria-atomic="true" для несрочного статуса, чтобы вспомогательные технологии его озвучили. Как вариант — объявляйте сообщение через LiveAnnouncer из @angular/cdk/a11y.
  • Статус только цветом иконки. Статус передаётся цветом иконки, который воспринимается не всеми пользователями. Повторяйте статус в заголовке или тексте (либо добавляйте визуально скрытый текст, например <span class="cdk-visually-hidden">Ошибка:</span>), а декоративную иконку статуса помечайте aria-hidden="true".
  • Кнопка закрытия. Размещайте кнопку закрытия на нативном <button> с доступным именем (aria-label="Закрыть"), чтобы она была доступна и управлялась с клавиатуры.
  • Фокус при закрытии. Закрытие алерта, когда фокус находится на его кнопке закрытия, сбрасывает фокус на <body>. Переведите фокус на логичный элемент после удаления — предпочтительно через FocusMonitor.focusVia из @angular/cdk/a11y, чтобы сохранить кольцо фокуса.
Предложения по улучшению
Если вы нашли ошибку или хотите доработать статью, создайте запрос на GitHub.