Found while migrating the dotAI portlet (#37417), which copied this pattern.
dot-analytics-dashboard uses routed tabs — <p-tab [routerLink]> inside <p-tabs> with no [value] binding. PrimeNG derives aria-selected from [value], so with none bound every tab renders aria-selected="true" and a screen reader announces all of them as selected.
Verified in the dotAI portlet before the fix: all five tabs reported selected. After binding [value] on <p-tabs> and each <p-tab> — navigation still driven by routerLink, [value] purely for the a11y state — only the active tab reports selected.
Fix in dotAI for reference: 1f2fcd3652.
Note the same shape may exist anywhere else routed p-tabs are used without [value].
Found while migrating the dotAI portlet (#37417), which copied this pattern.
dot-analytics-dashboarduses routed tabs —<p-tab [routerLink]>inside<p-tabs>with no[value]binding. PrimeNG derivesaria-selectedfrom[value], so with none bound every tab rendersaria-selected="true"and a screen reader announces all of them as selected.Verified in the dotAI portlet before the fix: all five tabs reported selected. After binding
[value]on<p-tabs>and each<p-tab>— navigation still driven byrouterLink,[value]purely for the a11y state — only the active tab reports selected.Fix in dotAI for reference:
1f2fcd3652.Note the same shape may exist anywhere else routed
p-tabs are used without[value].