@angular/cdk/a11y package provides tools for improving application accessibility, including focus management, live announcements, and keyboard navigation.
Installation
Key Features
FocusMonitor
Monitors focus on elements and detects how they were focused (mouse, keyboard, touch, or programmatically).'mouse'- Focused via mouse click'keyboard'- Focused via keyboard navigation (Tab key)'touch'- Focused via touch interaction'program'- Focused programmatically (e.g.,.focus()call)null- Element lost focus
LiveAnnouncer
Announces messages to screen readers using an aria-live region.'polite'- Wait for current speech to finish (default)'assertive'- Interrupt current speech'off'- Do not announce
FocusTrap
Traps focus within an element, useful for modal dialogs.ListKeyManager / FocusKeyManager
Manages keyboard navigation for lists of items.AriaDescriber
Associates elements with descriptive text usingaria-describedby.
HighContrastModeDetector
Detects high contrast mode for improved accessibility.InteractivityChecker
Determines if an element is focusable, visible, and enabled.API Reference
FocusMonitor
| Method | Description |
|---|---|
monitor(element, checkChildren?) | Start monitoring an element’s focus |
stopMonitoring(element) | Stop monitoring an element |
focusVia(element, origin, options?) | Focus element with specific origin |
LiveAnnouncer
| Method | Description |
|---|---|
announce(message, politeness?, duration?) | Announce message to screen readers |
clear() | Clear current announcement |
FocusTrap
| Property | Description |
|---|---|
enabled | Whether the focus trap is active |
| Method | Description |
|---|---|
focusInitialElementWhenReady() | Focus the first focusable element |
focusFirstTabbableElement() | Focus first tabbable element |
focusLastTabbableElement() | Focus last tabbable element |
destroy() | Clean up the focus trap |
Directives
cdkTrapFocus
Traps focus within an element.cdkTrapFocus: boolean- Enable/disable trapcdkTrapFocusAutoCapture: boolean- Auto-focus on init
cdkMonitorElementFocus / cdkMonitorSubtreeFocus
Monitor focus on an element.Best Practices
- Always announce dynamic changes - Use
LiveAnnouncerfor status updates - Trap focus in modals - Prevent keyboard users from tabbing outside dialogs
- Provide keyboard navigation - Use
FocusKeyManagerfor lists - Test with screen readers - Verify announcements work as expected
- Use semantic HTML - CDK enhances but doesn’t replace proper markup