Skip to main content

What are the different types of directives in Angular? Give real-world examples.

In Angular, directives are classes that allow you to manipulate the DOM or component behavior. There are three main types of directives:

What are the different types of directives in Angular? Give real-world examples.

🧱 1. Component Directives

  • Technically, components are directives with a template.

  • They control a section of the screen (UI) and encapsulate logic.

✅ Example:


@Component({ selector: 'app-user-card', template: `<h2>{{ name }}</h2>` }) export class UserCardComponent { name = 'Alice'; }

📌 Real-World Use:

  • A ProductCardComponent showing product details on an e-commerce site.

  • A ChatMessageComponent displaying individual messages in a chat app.

⚙️ 2. Structural Directives

✅ Built-in Examples:

  • *ngIf: Conditionally includes a template.

  • *ngFor: Iterates over a list and renders template for each item.

  • *ngSwitch: Switches views based on a condition.

📌 Real-World Use:

<div *ngIf="user.isLoggedIn">Welcome back!</div> <ul> <li *ngFor="let item of cartItems">{{ item.name }}</li> </ul>

🛠️ Custom Example:

@Directive({ selector: '[appUnless]' }) export class UnlessDirective { constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef) {} @Input() set appUnless(condition: boolean) { if (!condition) { this.viewContainer.createEmbeddedView(this.templateRef); } else { this.viewContainer.clear(); } } }
<div *appUnless="isLoggedIn">Please log in</div>

🎨 3. Attribute Directives

✅ Built-in Examples:

  • ngClass, ngStyle, required, etc.

📌 Real-World Use:

<button [ngClass]="{ 'primary': isPrimary }">Submit</button> <p [ngStyle]="{ color: error ? 'red' : 'green' }">Status</p>

🛠️ Custom Example:

@Directive({ selector: '[appHighlight]' }) export class HighlightDirective { constructor(private el: ElementRef) { el.nativeElement.style.backgroundColor = 'yellow'; } }
<p appHighlight>This text is highlighted</p>

✅ Summary Table

TypePurposeBuilt-in ExamplesReal-world Use Case
ComponentUI + behavior + templateAny Angular componentReusable UI blocks like cards, modals, widgets
StructuralAdd/remove elements in DOM*ngIf, *ngForConditional rendering, lists
AttributeModify element behavior/appearancengClass, ngStyleHighlight, tooltips, dynamic styles