Bird
Raised Fist0
Angularframework~10 mins

Why directives are needed in Angular - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a simple Angular directive that changes text color.

Angular
import { Directive, ElementRef } from '@angular/core';

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective {
  constructor(private el: ElementRef) {
    this.el.nativeElement.style.color = [1];
  }
}
Drag options to blanks, or click blank then click option'
A'blue'
B'bold'
C'center'
D'underline'
Attempts:
3 left
💡 Hint
Common Mistakes
Using text style values like 'bold' instead of a color.
Forgetting to use quotes around the color string.
2fill in blank
medium

Complete the code to apply the directive to a paragraph element in the template.

Angular
<p [1]>This text will be highlighted.</p>
Drag options to blanks, or click blank then click option'
Ahighlight
BhighlightDirective
Capp-highlight
DappHighlight
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong attribute name that doesn't match the directive selector.
Using dash-case instead of camelCase.
3fill in blank
hard

Fix the error in the directive code to properly inject ElementRef.

Angular
import { Directive, [1] } from '@angular/core';

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective {
  constructor(private el: ElementRef) {}
}
Drag options to blanks, or click blank then click option'
AElementRef
BRenderer2
CInput
DHostListener
Attempts:
3 left
💡 Hint
Common Mistakes
Importing unrelated classes like Renderer2 or Input instead of ElementRef.
Forgetting to import ElementRef causing runtime errors.
4fill in blank
hard

Fill both blanks to create a directive that changes background color on mouse enter and resets on mouse leave.

Angular
import { Directive, ElementRef, HostListener } from '@angular/core';

@Directive({
  selector: '[appHover]'
})
export class HoverDirective {
  constructor(private el: ElementRef) {}

  @HostListener('mouseenter') onMouseEnter() {
    this.el.nativeElement.style.backgroundColor = [1];
  }

  @HostListener('mouseleave') onMouseLeave() {
    this.el.nativeElement.style.backgroundColor = [2];
  }
}
Drag options to blanks, or click blank then click option'
A'yellow'
B'transparent'
C'red'
D'none'
Attempts:
3 left
💡 Hint
Common Mistakes
Using invalid color values.
Using 'none' instead of 'transparent' to reset background color.
5fill in blank
hard

Fill all three blanks to create a structural directive that shows content only if a condition is true.

Angular
import { Directive, TemplateRef, ViewContainerRef, Input } from '@angular/core';

@Directive({
  selector: '[appIf]'
})
export class IfDirective {
  constructor(private [1]: TemplateRef<any>, private [2]: ViewContainerRef) {}

  @Input() set appIf(condition: boolean) {
    if (condition) {
      this.[3].createEmbeddedView(this.templateRef);
    } else {
      this.viewContainer.clear();
    }
  }
}
Drag options to blanks, or click blank then click option'
AtemplateRef
BviewContainer
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up variable names for TemplateRef and ViewContainerRef.
Calling createEmbeddedView on the wrong variable.

Practice

(1/5)
1. Why are directives needed in Angular?
easy
A. To add special behavior to HTML elements
B. To write plain CSS styles
C. To create backend APIs
D. To manage database connections

Solution

  1. Step 1: Understand the role of directives

    Directives allow you to add custom behavior to HTML elements beyond standard HTML capabilities.
  2. Step 2: Compare with other options

    Options A, C, and D relate to styling, backend, and database, which are not the purpose of directives.
  3. Final Answer:

    To add special behavior to HTML elements -> Option A
  4. Quick Check:

    Directives add behavior = B [OK]
Hint: Directives change HTML behavior, not backend or styles [OK]
Common Mistakes:
  • Confusing directives with CSS styling
  • Thinking directives manage backend logic
  • Assuming directives handle database tasks
2. Which of the following is the correct syntax to apply a directive in Angular?
easy
A.
B.
C.
D.

Solution

  1. Step 1: Identify Angular directive syntax

    Structural directives use the asterisk (*) before the directive name to modify the DOM structure.
  2. Step 2: Check other symbols

    # is for template references, ? and @ are invalid for directives.
  3. Final Answer:

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

    Structural directives use * prefix = A [OK]
Hint: Look for * before directive name for structural directives [OK]
Common Mistakes:
  • Using # which is for template references
  • Using ? or @ which are invalid syntax
  • Omitting the * for structural directives
3. Given this Angular directive usage:
<button appHighlight>Click Me</button>

What will happen when this directive is applied?
medium
A. Nothing happens
B. The button text changes to uppercase
C. The button becomes disabled
D. The button background color changes

Solution

  1. Step 1: Understand typical directive behavior

    Directives like 'appHighlight' usually change the appearance, such as background color, to highlight elements.
  2. Step 2: Evaluate other options

    Changing text case or disabling button is less common for a highlight directive; 'Nothing happens' is unlikely if directive is implemented.
  3. Final Answer:

    The button background color changes -> Option D
  4. Quick Check:

    Highlight directive changes background = A [OK]
Hint: Highlight means color change, not disabling or text case [OK]
Common Mistakes:
  • Assuming text changes instead of style
  • Thinking directive disables element
  • Believing directive has no effect
4. What is wrong with this directive usage?
<div *myDirective>Content</div>

Assuming myDirective is a component, not a structural directive.
medium
A. Components cannot be used with * syntax
B. The directive name is invalid
C. The div tag cannot have directives
D. There is no closing tag

Solution

  1. Step 1: Understand directive vs component usage

    Structural directives use * syntax; components are used as elements, not with *.
  2. Step 2: Check other options

    Directive name can be valid, div can have directives, and closing tag is present.
  3. Final Answer:

    Components cannot be used with * syntax -> Option A
  4. Quick Check:

    * syntax only for structural directives = D [OK]
Hint: Use * only with structural directives, not components [OK]
Common Mistakes:
  • Using * with components
  • Thinking div can't have directives
  • Ignoring correct closing tags
5. You want to create a reusable directive that changes text color based on a condition. Which approach best explains why directives are needed here?
hard
A. Directives replace components for UI layout
B. Directives let you add reusable behavior to any HTML element without changing its structure
C. Directives are only for creating new HTML tags, not for behavior
D. Directives are used to fetch data from servers

Solution

  1. Step 1: Identify directive purpose in reuse

    Directives add behavior like changing text color reusable on any element without altering HTML structure.
  2. Step 2: Eliminate incorrect uses

    Directives do more than create tags, do not replace components, and do not fetch data.
  3. Final Answer:

    Directives let you add reusable behavior to any HTML element without changing its structure -> Option B
  4. Quick Check:

    Directives add reusable behavior = C [OK]
Hint: Directives add behavior reuse without new tags or data fetching [OK]
Common Mistakes:
  • Thinking directives only create new tags
  • Confusing directives with components
  • Assuming directives handle data fetching
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