Angular Directives | asadmukhtar.info
Step-by-Step Guide to Setting Up Authentication in Laravel 12 with Breeze   |   Manual Authentication in Laravel 12: Step-by-Step Guide   |   How to Build a REST API in Laravel 12 with Sanctum   |   Laravel 12 CRUD Application with Image Upload   |   Laravel 12 Multi-Auth System: Admin & User Login   |   How to Integrate Stripe Payment Gateway in Laravel 12   |   Building a Role-Based Access Control (RBAC) in Laravel 12   |   How to Use Laravel 12 Queues and Jobs for Background Tasks   |   Laravel 12 Livewire CRUD Example with Validation   |   Email Verification and Password Reset in Laravel 12   |   How to Use Laravel 12 API with Vue.js 3   |   Laravel 12 AJAX CRUD with jQuery and Bootstrap   |   Laravel 12 Multi-Language Website Setup   |   React Best Practices for 2025: Performance, SEO, and Scalability   |   How to Build a Full-Stack MERN App: A Step-by-Step Guide   |   React State Management: Redux vs. Context API vs. Recoil   |   Server-Side Rendering (SSR) in React with Next.js for SEO   |   How to Optimize React Apps for Faster Load Times   |   Building a REST API with Node.js and Express for a React App   |   Integrating JWT Authentication in React and Node.js (MERN Stack)   |   Real-time Chat App with React, Node.js, and Socket.io   |   How to Deploy a MERN Stack Application on AWS or Vercel   |   Connecting React Frontend to a Node.js Backend with Axios   |   Laravel Implement Flash Messages Example   |   How to integrate Angular 19 with Node.js and Express for full-stack development   |   Best practices for connecting Angular 19 frontend with Laravel API   |   Step-by-step guide to upgrading an existing project to Angular 19   |   How to implement authentication in Angular 19 using JWT and Firebase   |   Optimizing server-side rendering in Angular 19 with route-level render modes   |   Using Angular 19 signals for state management in large applications   |   How to create standalone components in Angular 19 for modular architecture   |   Building a CRUD application in Angular 19 with MongoDB and Express   |   Implementing lazy loading in Angular 19 to improve performance   |   How to integrate Angular 19 with GraphQL for efficient data fetching   |   Vue 3 Composition API vs Options API: A Comprehensive Comparison   |   Fetching and Displaying Data from APIs in Vue.js with Axios   |   Building a Todo App in Vue.js with Local Storage Integration   |   Handling Forms and Validation in Vue.js Using VeeValidate   |   State Management in Vue.js Applications Using Vuex   |   10 Most Important Tasks Every MERN Stack Developer Should Master   |   How to Build a Full-Stack CRUD App with MERN Stack   |   Best Practices for Authentication & Authorization in MERN Stack   |   1. MEAN Stack vs. MERN Stack: Which One Should You Choose in 2025   |   Top 10 Node.js Best Practices for Scalable and Secure Applications   |   How to Build a REST API with Laravel and Node.js (Step-by-Step Guide)   |   Mastering Angular and Express.js for Full-Stack Web Development   |   Top 10 Daily Tasks Every Frontend Developer Should Practice   |   Essential Backend Development Tasks to Boost Your Coding Skills   |   Real-World Mini Projects for Practicing React.js Daily   |   Laravel Developer Task List: Beginner to Advanced Challenges   |   How to Assign Effective Tasks to Your Intern Developers   |   10 Must-Try Tasks to Master JavaScript Fundamentals   |   Practical CSS Challenges That Improve Your UI Design Skills   |   Top Tasks to Learn API Integration in React and Angular   |   Best Task Ideas for a 30-Day Web Development Challenge   |   Top Git and GitHub Tasks Every Developer Should Know   |   30-Day Task Plan for Web Development Interns   |   Weekly Task Schedule for Junior Developers in a Startup   |   How to Track Progress with Development Tasks for Interns   |   What Tasks Should You Give to Interns in a MERN Stack Project   |   Build These 5 Projects to Master React Routing   |   Task-Based Learning: Become a Full-Stack Developer in 90 Days   |   Daily Coding Tasks That Will Sharpen Your Logical Thinking   |   Top 7 Backend Task Ideas to Practice With Node.js and MongoDB   |  

1. What are Angular Directives?

Directives are special markers (like attributes) in HTML that tell Angular how to modify elements.

Types of Directives

1️⃣ Component Directives – Used to create reusable UI components.
2️⃣ Structural Directives – Modify the DOM structure (*ngIf, *ngFor).
3️⃣ Attribute Directives – Change the behavior or appearance of elements (ngClass, ngStyle).

2. Component Directives

A Component Directive is simply an Angular component. It consists of:
Selector (defines how to use it in HTML)
Template (HTML content)
Styles (CSS for the component)

Example:

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

@Component({
  selector: 'app-example',
  template: `<h2>Welcome to Angular Directives</h2>`,
  styles: [`h2 { color: blue; }`]
})
export class ExampleComponent { }

Usage in HTML:

<app-example></app-example>

3. Structural Directives

Structural directives modify the DOM structure dynamically.

Step 1: Using *ngIf

*ngIf removes or adds an element based on a condition.

<p *ngIf="isLoggedIn">Welcome, User!</p>
isLoggedIn = true; // The paragraph will be displayed

Step 2: Using *ngFor

*ngFor loops through a list and displays items.

<ul>
  <li *ngFor="let item of items">{{ item }}</li>
</ul>
items = ['Angular', 'React', 'Vue'];

Step 3: Using *ngSwitch

*ngSwitch is used for multiple conditional cases.

<div [ngSwitch]="status">
  <p *ngSwitchCase="'active'">User is active</p>
  <p *ngSwitchCase="'inactive'">User is inactive</p>
  <p *ngSwitchDefault>Unknown status</p>
</div>
status = 'active';

4. Attribute Directives

Attribute directives modify the behavior or styling of an element.

Step 4: Using ngClass

Dynamically apply CSS classes.

<p [ngClass]="{'text-success': isActive, 'text-danger': !isActive}">Status Message</p>

Step 5: Using ngStyle

Dynamically apply styles.

<p [ngStyle]="{'color': isActive ? 'green' : 'red'}">Dynamic Text</p>

5. Creating a Custom Directive

You can create a custom directive using Angular CLI:

ng generate directive highlight

Modify highlight.directive.ts:

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

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective {
  constructor(private el: ElementRef, private renderer: Renderer2) {}

  @HostListener('mouseenter') onMouseEnter() {
    this.renderer.setStyle(this.el.nativeElement, 'backgroundColor', 'yellow');
  }

  @HostListener('mouseleave') onMouseLeave() {
    this.renderer.setStyle(this.el.nativeElement, 'backgroundColor', 'transparent');
  }
}

Usage in HTML

<p appHighlight>Hover over this text to see the effect!</p>

Conclusion

✔️ Angular Directives enhance HTML elements and enable dynamic behavior.
✔️ Structural Directives modify the DOM (*ngIf, *ngFor, *ngSwitch).
✔️ Attribute Directives change styling (ngClass, ngStyle).
✔️ Custom Directives allow for reusable functionalities.

Mastering Angular Directives improves the development of dynamic and interactive applications! 🚀