Bird
Raised Fist0
Angularframework~20 mins

Template reference for direct access in Angular - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Template Reference Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output when accessing an input value via template reference?
Consider this Angular template snippet:
<input #userInput type="text" value="Hello">
<button (click)="logValue(userInput.value)">Log</button>

What will be logged when the button is clicked?
Angular
logValue(value: string) {
  console.log(value);
}
AAn error because #userInput is not accessible in the component
B"Hello"
Cundefined
D"userInput"
Attempts:
2 left
💡 Hint
Template reference variables allow direct access to DOM elements in the template.
📝 Syntax
intermediate
2:00remaining
Which template reference syntax correctly accesses a child component's method?
Given a child component <app-child> with a method reset(), which template code correctly calls reset() from a button click?
A&lt;app-child #childComp&gt;&lt;/app-child&gt;<br>&lt;button (click)="childComp.reset()"&gt;Reset&lt;/button&gt;
B&lt;app-child #childComp&gt;&lt;/app-child&gt;<br>&lt;button (click)="childComp()"&gt;Reset&lt;/button&gt;
C&lt;app-child&gt;&lt;/app-child&gt;<br>&lt;button (click)="#childComp.reset()"&gt;Reset&lt;/button&gt;
D&lt;app-child #childComp&gt;&lt;/app-child&gt;<br>&lt;button (click)="reset()"&gt;Reset&lt;/button&gt;
Attempts:
2 left
💡 Hint
Template reference variables can be used to call public methods of child components.
🔧 Debug
advanced
2:00remaining
Why does this template reference cause a runtime error?
Template snippet:
<app-input #inputRef></app-input>
<button (click)="inputRef.focus()">Focus</button>

Runtime error: "inputRef.focus is not a function". Why?
AThe template reference variable is not accessible inside the (click) event.
BThe input element does not have a focus() method in Angular templates.
CThe template reference points to an Angular component, not a native input element, so focus() is undefined.
DThe input element is missing a closing tag causing the reference to fail.
Attempts:
2 left
💡 Hint
Check what the template reference actually points to.
❓ state_output
advanced
2:00remaining
What is the value of the template reference variable after user input?
Template:
<input #nameInput type="text">
<button (click)="showName(nameInput.value)">Show</button>

Component method:
showName(name: string) {
  this.displayName = name;
}

If the user types "Angular" in the input and clicks Show, what is the value of displayName?
A"" (empty string)
B"nameInput"
Cundefined
D"Angular"
Attempts:
2 left
💡 Hint
Template reference variables reflect the current state of the DOM element.
🧠 Conceptual
expert
2:00remaining
Why use template reference variables instead of @ViewChild for direct access?
Which reason best explains when template reference variables are preferred over @ViewChild in Angular?
ATemplate references allow direct access in the template without needing component class code, useful for simple DOM interactions.
B@ViewChild is deprecated and should not be used anymore.
C@ViewChild only works with native DOM elements, not Angular components.
DTemplate references can access private component properties, while @ViewChild cannot.
Attempts:
2 left
💡 Hint
Think about where and how you want to access elements or components.

Practice

(1/5)
1. What is the main purpose of a #templateReference in Angular templates?
easy
A. To bind data between components
B. To define a new Angular component
C. To create a service for dependency injection
D. To directly access a DOM element or component instance in the template

Solution

  1. Step 1: Understand what template references do

    Template references let you name elements or components in the template for direct access.
  2. Step 2: Identify their use

    They are used to access DOM elements or component instances directly without extra code.
  3. Final Answer:

    To directly access a DOM element or component instance in the template -> Option D
  4. Quick Check:

    Template reference = direct element/component access [OK]
Hint: Template references name elements for direct access [OK]
Common Mistakes:
  • Confusing template references with component declarations
  • Thinking they create services
  • Assuming they handle data binding
2. Which of the following is the correct syntax to create a template reference named inputBox on an <input> element?
easy
A.
B.
C.
D.

Solution

  1. Step 1: Recall Angular template reference syntax

    Angular uses the hash symbol (#) to declare template references.
  2. Step 2: Check each option

    Only #inputBox is valid syntax for template references on elements.
  3. Final Answer:

    <input #inputBox> -> Option B
  4. Quick Check:

    Use # for template references [OK]
Hint: Use # before name to create template reference [OK]
Common Mistakes:
  • Using ref= instead of #
  • Using * which is for structural directives
  • Using $ which is invalid here
3. Given this template snippet:
<input #myInput type="text">
<button (click)="myInput.focus()">Focus</button>

What happens when the button is clicked?
medium
A. Nothing happens because focus() is not a valid method
B. An error occurs because myInput is undefined
C. The input box receives keyboard focus
D. The button text changes to 'Focus'

Solution

  1. Step 1: Understand the template reference usage

    The #myInput references the input element, allowing direct access to its DOM methods.
  2. Step 2: Analyze the click event

    Click calls myInput.focus(), which sets keyboard focus on the input element.
  3. Final Answer:

    The input box receives keyboard focus -> Option C
  4. Quick Check:

    Template ref calls focus() = input focused [OK]
Hint: Template refs access DOM methods like focus() [OK]
Common Mistakes:
  • Assuming template refs are undefined in event handlers
  • Thinking focus() is invalid on input elements
  • Expecting button text to change
4. Consider this Angular template:
<input #userInput type="text">
<button (click)="logValue()">Log</button>

And this component code:
logValue() {
  console.log(userInput.value);
}

What is the problem here?
medium
A. The userInput template reference is not accessible in the component class
B. The logValue method is missing a parameter
C. The console.log statement is incorrect syntax
D. The button click event should be (click)="logValue(userInput)"

Solution

  1. Step 1: Understand template reference scope

    Template references exist only in the template, not in the component class directly.
  2. Step 2: Identify why userInput is undefined in the class

    Trying to access userInput in the class without passing it causes an error.
  3. Final Answer:

    The userInput template reference is not accessible in the component class -> Option A
  4. Quick Check:

    Template refs not in class scope [OK]
Hint: Template refs only exist in template, not class [OK]
Common Mistakes:
  • Assuming template refs are class properties
  • Forgetting to pass template ref as method argument
  • Confusing template refs with ViewChild
5. You want to create a form with an input and a button that clears the input when clicked. Using a template reference #inputRef, which template code correctly implements this behavior?
hard
A. Clear
B. Clear
C. Clear
D. Clear

Solution

  1. Step 1: Understand how to clear input value via template reference

    Directly setting inputRef.value = '' clears the input content.
  2. Step 2: Check other options for correctness

    Options B, C, and D call undefined or non-existent methods: clear() is undefined in the component, and clear() and reset() are not methods on input elements.
  3. Final Answer:

    <input #inputRef type="text"> <button (click)="inputRef.value = ''">Clear</button> -> Option A
  4. Quick Check:

    Set inputRef.value to empty string to clear [OK]
Hint: Set inputRef.value = '' to clear input [OK]
Common Mistakes:
  • Calling non-existent methods like clear() or reset() on input
  • Trying to call component methods without passing template ref
  • Confusing template ref usage with reactive forms
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard