Practice
1. What is the main purpose of using ARIA attributes in Angular templates?
easy
Solution
Step 1: Understand ARIA attributes purpose
ARIA attributes provide extra information to assistive tools like screen readers, helping users with disabilities understand UI elements.Step 2: Differentiate ARIA from styling or events
ARIA attributes do not affect styling or event handling; they focus on accessibility.Final Answer:
To improve accessibility by describing UI elements to assistive technologies -> Option DQuick Check:
ARIA = Accessibility info [OK]
Hint: ARIA attributes describe UI for assistive tools, not styling [OK]
Common Mistakes:
- Confusing ARIA with CSS styling
- Thinking ARIA adds event handling
- Assuming ARIA improves performance
2. Which is the correct way to bind an ARIA attribute dynamically in an Angular template?
easy
Solution
Step 1: Recall Angular attribute binding syntax
To bind ARIA attributes dynamically, Angular requires the syntax[attr.aria-attribute]because ARIA attributes are not standard DOM properties.Step 2: Evaluate each option
aria-label="{{labelText}}"uses interpolation but may not update properly;[aria-label]="labelText"tries property binding but ARIA attributes are not properties;bind-aria-label="labelText"is invalid syntax.Final Answer:
[attr.aria-label]="labelText" -> Option BQuick Check:
Use [attr.aria-...] for ARIA binding [OK]
Hint: Use [attr.aria-...] to bind ARIA attributes dynamically [OK]
Common Mistakes:
- Using property binding without attr prefix
- Using interpolation inside quotes for ARIA
- Trying non-existent bind-aria-label syntax
3. Given this Angular template snippet:
and the component code:
What will be the rendered HTML attribute for
<button [attr.aria-pressed]="isPressed">Toggle</button>
and the component code:
isPressed = true;
What will be the rendered HTML attribute for
aria-pressed?medium
Solution
Step 1: Understand Angular attribute binding with boolean
Binding[attr.aria-pressed]to a boolean value converts it to string "true" or "false" in the HTML attribute.Step 2: Check the value of
The variableisPressedisPressedis true, so the attribute will bearia-pressed="true".Final Answer:
aria-pressed="true" -> Option AQuick Check:
Boolean true becomes "true" string in ARIA attribute [OK]
Hint: Boolean bound to ARIA attribute becomes string "true" or "false" [OK]
Common Mistakes:
- Expecting ARIA attribute to be omitted for false
- Thinking boolean true converts to 'pressed'
- Assuming empty string when true
4. Identify the error in this Angular template snippet:
Assuming
<div role="button" [aria-checked]="isChecked">Click me</div>
Assuming
isChecked is a boolean in the component.medium
Solution
Step 1: Check ARIA attribute binding syntax
ARIA attributes are not DOM properties, so binding must use[attr.aria-checked]instead of[aria-checked].Step 2: Verify role and HTML correctness
Usingrole="button"on a div is valid for accessibility. The div tag is properly closed.Final Answer:
Incorrect binding syntax; should use [attr.aria-checked] -> Option CQuick Check:
Use [attr.aria-...] for ARIA binding [OK]
Hint: Always use [attr.aria-...] for ARIA bindings, not direct property [OK]
Common Mistakes:
- Binding ARIA attributes without attr prefix
- Thinking role="button" is invalid on div
- Confusing boolean binding rules
5. You want to create a custom toggle component in Angular that updates its ARIA state
aria-pressed dynamically and is keyboard accessible. Which combination of template and accessibility features is best practice?hard
Solution
Step 1: Identify accessible roles and keyboard support
Adivwithrole="button"andtabindex="0"makes it keyboard focusable and announces as a button to assistive tech.Step 2: Confirm ARIA state and event handling
Binding[attr.aria-pressed]dynamically reflects toggle state;(click)="toggle()"updates state on user interaction.Step 3: Compare other options
<button [attr.aria-pressed]="isActive" (click)="toggle()">Toggle</button>uses nativebuttonwhich is good but may not be a custom component;<span [attr.aria-pressed]="isActive" (click)="toggle()">Toggle</span>and D lack keyboard focus or role, reducing accessibility.Final Answer:
<div role="button" tabindex="0" [attr.aria-pressed]="isActive" (click)="toggle()">Toggle</div> -> Option AQuick Check:
Role + tabindex + ARIA state = accessible toggle [OK]
Hint: Use role="button" + tabindex="0" for custom keyboard accessible toggles [OK]
Common Mistakes:
- Using non-focusable elements without tabindex
- Missing role attribute for custom controls
- Binding ARIA incorrectly or missing event handlers
