Bird
Raised Fist0
Angularframework~20 mins

Component selector usage in Angular - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Angular Selector Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What will be rendered by this Angular component usage?

Given the Angular component with selector app-greeting and template <p>Hello, Angular!</p>, what will be the output when used as <app-greeting></app-greeting> in another component's template?

Angular
import { Component } from '@angular/core';

@Component({
  selector: 'app-greeting',
  template: '<p>Hello, Angular!</p>'
})
export class GreetingComponent {}
ANo output, component not rendered
B<p>Hello, Angular!</p>
C<app-greeting></app-greeting>
DError: Unknown element 'app-greeting'
Attempts:
2 left
💡 Hint

Think about how Angular replaces component selectors with their templates.

📝 Syntax
intermediate
1:30remaining
Which selector syntax is conventional for an Angular component?

Which of the following selector values is conventional for an Angular component?

A'.app-header'
B'[app-header]'
C'#app-header'
D'app-header'
Attempts:
2 left
💡 Hint

Angular component selectors are usually element selectors.

🔧 Debug
advanced
2:30remaining
Why does this Angular component not render when used as <app-footer></app-footer>?

Given this component code, why does using <app-footer></app-footer> in a template not render anything?

Angular
import { Component } from '@angular/core';

@Component({
  selector: '[app-footer]',
  template: '<footer>Footer content</footer>'
})
export class FooterComponent {}
AThe component is missing the @NgModule declaration.
BThe template syntax is invalid and causes a runtime error.
CThe selector is an attribute selector, so <app-footer> won't match it.
DAngular requires selectors to be class selectors for components.
Attempts:
2 left
💡 Hint

Check the selector type and how it matches HTML elements.

❓ state_output
advanced
2:30remaining
What is the output when using a component with a selector that matches multiple elements?

Consider this Angular component with selector div[app-highlight]. What will be rendered when used as below?

<div app-highlight>Text 1</div>
<span app-highlight>Text 2</span>
Angular
import { Component } from '@angular/core';

@Component({
  selector: 'div[app-highlight]',
  template: '<div style="color: red;">Highlighted</div>'
})
export class HighlightComponent {}
A
&lt;div style="color: red;"&gt;Highlighted&lt;/div&gt;
&lt;span app-highlight&gt;Text 2&lt;/span&gt;
B
&lt;div style="color: red;"&gt;Highlighted&lt;/div&gt;
&lt;span style="color: red;"&gt;Text 2&lt;/span&gt;
C
Text 1
&lt;span app-highlight&gt;Text 2&lt;/span&gt;
DError: Multiple elements matched by selector
Attempts:
2 left
💡 Hint

Think about how Angular matches selectors and replaces elements.

🧠 Conceptual
expert
3:00remaining
Why should Angular component selectors avoid common HTML tag names?

Why is it recommended to use custom prefixes like app- in Angular component selectors instead of common HTML tags like header or footer?

ATo prevent conflicts with native HTML elements and ensure Angular renders the component correctly.
BBecause Angular does not allow selectors that match native HTML tags.
CTo improve performance by reducing the number of DOM elements.
DBecause browsers block custom elements without prefixes.
Attempts:
2 left
💡 Hint

Think about how browsers and Angular handle native HTML tags versus custom elements.

Practice

(1/5)
1. What does the selector property in an Angular component define?
easy
A. The HTML tag or attribute used to place the component in templates
B. The CSS styles applied to the component
C. The TypeScript class name of the component
D. The module where the component is declared

Solution

  1. Step 1: Understand the role of selector in Angular components

    The selector tells Angular what HTML tag or attribute to look for to insert the component's template.
  2. Step 2: Differentiate selector from other properties

    CSS styles and class names are unrelated to selector; selector is specifically for placement in HTML.
  3. Final Answer:

    The HTML tag or attribute used to place the component in templates -> Option A
  4. Quick Check:

    Selector = HTML tag/attribute [OK]
Hint: Selector defines how to use the component in HTML [OK]
Common Mistakes:
  • Confusing selector with styles or class names
  • Thinking selector is the component's class name
  • Assuming selector defines module info
2. Which of the following is a valid selector syntax for an Angular component?
easy
A. [my-component]
B. my-component
C. .my-component
D. myComponent

Solution

  1. Step 1: Recognize selector types in Angular

    Angular selectors can be tag names (like 'my-component'), attribute selectors ('[my-component]'), or class selectors ('.my-component').
  2. Step 2: Identify valid selector syntax

    The option 'my-component' is a valid tag selector string used in the selector property. The other options represent attribute or class selectors.
  3. Final Answer:

    my-component -> Option B
  4. Quick Check:

    Tag selector syntax = tag name string [OK]
Hint: Tag selectors are simple tag names without brackets or dots [OK]
Common Mistakes:
  • Using selector syntax directly instead of HTML usage
  • Confusing attribute selector brackets with HTML tags
  • Using camelCase instead of kebab-case for tags
3. Given this component selector: selector: '[appHighlight]', how would you use it in HTML?
medium
A.
B.
C.
D.

Solution

  1. Step 1: Understand attribute selector syntax

    The selector '[appHighlight]' means the component is used as an attribute on an HTML element.
  2. Step 2: Match usage to selector

    Using
    applies the component to the div element as an attribute, matching the selector.
  3. Final Answer:

    <div appHighlight></div> -> Option C
  4. Quick Check:

    Attribute selector = element with attribute [OK]
Hint: Attribute selectors used as attributes on elements [OK]
Common Mistakes:
  • Using tag syntax for attribute selectors
  • Using class or id instead of attribute
  • Forgetting brackets mean attribute selector
4. Why does this Angular component not render?
@Component({ selector: 'my-widget', template: '

Hi

' }) export class MyWidgetComponent {}
Used in HTML as: <my-widget></my-widget>
medium
A. Component is missing @NgModule declarations
B. Selector must be prefixed with 'app-' by Angular rules
C. Selector is correct; problem is elsewhere
D. Selector should be in square brackets for attribute usage

Solution

  1. Step 1: Check selector syntax

    The selector 'my-widget' is valid as a tag selector and matches usage <my-widget></my-widget>.
  2. Step 2: Verify component registration

    Angular requires components to be declared in an NgModule or standalone to render. Missing declaration causes no rendering.
  3. Final Answer:

    Component is missing @NgModule declarations -> Option A
  4. Quick Check:

    Missing declaration = no render [OK]
Hint: Component must be declared or standalone to render [OK]
Common Mistakes:
  • Thinking selector must have 'app-' prefix
  • Confusing attribute selector syntax with tag selector
  • Ignoring module declarations
5. You want to create a component that can be used as a CSS class selector. Which selector should you use and how do you apply it in HTML?
hard
A. Use selector: '#fancy-button' and apply as <button id="fancy-button">
B. Use selector: 'fancy-button' and apply as <fancy-button>
C. Use selector: '[fancy-button]' and apply as <button fancy-button>
D. Use selector: '.fancy-button' and apply as <button class="fancy-button">

Solution

  1. Step 1: Understand class selector syntax

    To use a component as a CSS class selector, prefix the selector with a dot (.) like '.fancy-button'.
  2. Step 2: Apply component in HTML

    Use the component by adding the class attribute with the selector name: <button class="fancy-button">.
  3. Final Answer:

    Use selector '.fancy-button' and apply as <button class="fancy-button"> -> Option D
  4. Quick Check:

    Class selector = dot prefix + class attribute [OK]
Hint: Class selectors start with dot and used as class attribute [OK]
Common Mistakes:
  • Using id selector (#) instead of class selector (.)
  • Confusing attribute selector brackets with class selector
  • Applying class selector as tag or attribute
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