WCAG accessibility audit for Angular applications
Why Angular causes accessibility issues
Angular is the framework of choice for complex enterprise applications, but its sophisticated architecture creates specific accessibility problems. Angular's change detection mechanism updates the DOM invisibly to screen readers: content changes on screen without assistive technologies being notified. Angular Material, the official component library, provides components with partial ARIA support — mat-select, mat-autocomplete, and mat-datepicker have documented gaps in keyboard management and announcements. Angular's routing system performs client-side navigations without screen reader announcements or focus management. Structural directives (*ngIf, *ngFor) add and remove DOM elements, causing focus losses. Angular's reactive forms manage validation in TypeScript code but do not automatically associate error messages with fields via aria-describedby. These problems affect critical applications (banking, government, healthcare) where accessibility is a legal obligation.
Common issues on Angular
Change detection invisible to screen readers
WCAG 4.1.3Angular's change detection system automatically updates the DOM when component data changes. These updates are not wrapped in aria-live regions and do not trigger announcements. A notification counter that updates, a data table that refreshes, a status message that appears: all of this is invisible to screen readers without explicit aria-live implementation.
Angular Material with ARIA gaps
WCAG 4.1.2Angular Material components (mat-select, mat-autocomplete, mat-datepicker, mat-table) have incomplete ARIA support. mat-select does not always announce the selected option. mat-datepicker has complex keyboard navigation not conforming to APG patterns. mat-autocomplete does not correctly handle aria-activedescendant. These gaps are documented in the project's GitHub issues but persist in stable versions.
Routing without announcement or focus management
WCAG 2.4.3Angular's router performs client-side navigations that change content without reload. Screen readers do not detect the page change. Focus remains on the clicked link instead of moving to the new content. The page title is not always updated via Title service. The blind user does not know the navigation worked or what content is now displayed.
*ngIf directives causing focus losses
WCAG 2.4.3The *ngIf and *ngFor directives physically add and remove DOM elements. If the focused element is destroyed by *ngIf, focus returns to the top of the document. This problem is frequent in conditional forms (showing a field based on a selection), dynamic lists (deleting an item), and tab interfaces built with *ngIf instead of CSS.
Test your Angular site
Discover the WCAG non-conformities of your Angular site in 5 minutes. Free, no commitment.
Run the free auditWhat Scrutia detects on Angular
Scrutia runs your Angular application in a real browser and waits for the change detection cycle to complete before testing. Our engine detects unannounced DOM updates, Angular Material components with incomplete ARIA, navigations without focus management, and focus losses caused by structural directives. We simulate complete keyboard interactions including navigation in mat-select, mat-datepicker, and mat-table. Corrections are provided in Angular TypeScript/HTML with recommended ARIA attributes and patterns.
Frequently Asked Questions — Angular
Does Scrutia detect problems specific to Angular Material?
Are corrections provided in Angular syntax?
Our Angular application uses CDK a11y, is that sufficient?
Audit your Angular site now
106 RGAA criteria tested in 5 minutes. Free score, full report with code fixes for €49.
Test my Angular site