🖱️

Angular Click Outside Directive

Detect clicks outside a specific element using a reusable directive.

#angular #directive #dom

Angular Click Outside Directive

Need to close a dropdown or modal when the user clicks somewhere else? Use this directive.

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

@Directive({
  selector: '[clickOutside]',
  standalone: true
})
export class ClickOutsideDirective {
  @Output() clickOutside = new EventEmitter<void>();

  constructor(private elementRef: ElementRef) {}

  @HostListener('document:click', ['$event.target'])
  public onClick(target: any) {
    const clickedInside = this.elementRef.nativeElement.contains(target);
    if (!clickedInside) {
      this.clickOutside.emit();
    }
  }
}

Usage

<div class="dropdown" (clickOutside)="closeDropdown()">
  <!-- Dropdown content -->
</div>