[javascript] Angular에서의 자바스크립트 이벤트 처리 방법

Angular 애플리케이션에서 자바스크립트 이벤트를 처리하는 방법에 대해 알아보겠습니다.

1. 이벤트 바인딩

1.1 템플릿에서의 이벤트 바인딩

Angular에서는 템플릿에서 이벤트를 바인딩하는 것이 일반적입니다. 예를 들어, 클릭 이벤트 처리를 위한 기본적인 방법은 다음과 같습니다:

<button (click)="handleClick()">클릭</button>

위 코드에서 (click)는 클릭 이벤트를 의미하며, handleClick()은 해당 이벤트가 발생했을 때 호출될 메서드를 가리킵니다.

1.2 컴포넌트 클래스에서의 이벤트 처리

컴포넌트 클래스에서는 해당 이벤트를 처리하는 메서드를 정의해야 합니다. 예를 들어:

export class MyComponent {
  handleClick() {
    // 클릭 이벤트를 처리하는 로직 작성
  }
}

2. RxJS를 이용한 이벤트 처리

2.1 Observable을 이용한 이벤트 스트림 처리

RxJS를 사용하여 Observable을 생성하고, 이를 통해 이벤트 스트림을 처리할 수 있습니다. 예를 들어, Subject를 사용하여 클릭 이벤트를 처리하는 방법은 다음과 같습니다:

import { Subject } from 'rxjs';

export class MyComponent {
  clickSubject = new Subject();

  handleClick() {
    this.clickSubject.next();
  }

  ngOnInit() {
    this.clickSubject.subscribe(() => {
      // 클릭 이벤트를 처리하는 로직 작성
    });
  }
}

위 코드에서 clickSubject는 클릭 이벤트에 대한 Subject를 나타내며, handleClick() 메서드에서 해당 Subject에 등록된 옵저버들에게 클릭 이벤트가 발생했음을 알립니다. 또한 ngOnInit() 라이프사이클 훅을 통해 Subject를 구독하여 이벤트를 처리하는 로직을 작성할 수 있습니다.

3. 자체 커스텀 이벤트 정의

Angular에서는 자체 커스텀 이벤트를 정의하여 사용할 수 있습니다. 예를 들어, 다음은 자체 커스텀 이벤트를 정의하는 방법입니다:

import { Component, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'app-custom',
  template: '<button (click)="onClick()">클릭</button>',
})
export class CustomComponent {
  @Output() customEvent = new EventEmitter();

  onClick() {
    this.customEvent.emit('Custom event emitted');
  }
}

위 코드에서 @Output 데코레이터를 사용하여 customEvent라는 자체 커스텀 이벤트를 정의하고, 이벤트가 발생했을 때 emit()을 사용하여 해당 이벤트를 발동시킵니다.

Angular에서 자바스크립트 이벤트 처리에 대한 간단한 소개였습니다. 이 외에도 다양한 방법으로 이벤트를 처리할 수 있으며, 자세한 내용은 Angular 공식 문서를 참고하시기 바랍니다.

참고 문헌: