[typescript] Angular 디렉티브

Angular 애플리케이션을 작성할 때 디렉티브는 매우 중요한 구성 요소 중 하나입니다. 디렉티브는 HTML 요소를 확장하고, 속성을 정의하며, 동작을 변경합니다. Angular에서는 세 가지 유형의 디렉티브가 있습니다.

  1. 컴포넌트 디렉티브 - 가장 기본적인 디렉티브로, 템플릿과 동작을 가지는 디렉티브입니다.
  2. 구조 디렉티브 - DOM의 구조를 변경하거나 요소를 반복하는 디렉티브입니다.
  3. 속성 디렉티브 - HTML 요소의 외관이나 동작을 기반으로 다른 디렉티브와 함께 사용됩니다.

커스텀 디렉티브 작성하기

다음은 간단한 Angular 커스텀 속성 디렉티브의 예시입니다. 이 디렉티브는 마우스 오버 시 특정 스타일을 적용합니다.

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

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

  @Input() highlightColor: string;

  @HostListener('mouseenter') onMouseEnter() {
    this.highlight(this.highlightColor || 'yellow');
  }

  @HostListener('mouseleave') onMouseLeave() {
    this.highlight(null);
  }

  private highlight(color: string) {
    this.el.nativeElement.style.backgroundColor = color;
  }
}

커스텀 디렉티브 사용하기

커스텀 디렉티브를 사용하려면 해당 디렉티브를 선언해야 합니다. 이때, declarations 배열 또는 imports 배열에 디렉티브를 추가해야 합니다.

import { HighlightDirective } from './highlight.directive';

@NgModule({
  declarations: [
    HighlightDirective
  ],
  // ...
})
export class AppModule { }

그런 다음 HTML 템플릿에서 해당 디렉티브를 사용할 수 있습니다.

<p appHighlight highlightColor="lightblue">
  마우스를 올리면 강조됩니다.
</p>

이제 Angular 디렉티브를 작성하고 사용하는 방법에 대해 간략히 알아보았습니다. 디렉티브는 Angular 애플리케이션에서 강력하고 유연한 동작을 제공하는 데 중요한 역할을 합니다.

참고 자료