[angular] 컴포넌트 통신 구성

Angular 애플리케이션을 개발할 때, 여러 컴포넌트 간에 데이터를 효과적으로 공유하고 상호 작용할 수 있어야 합니다. 이를 위해 Angular는 여러 방법을 제공합니다. 이 블로그 포스트에서는 Angular에서 컴포넌트 간에 효과적인 통신을 구성하는 방법을 안내하겠습니다.

목차

  1. 서비스를 활용한 데이터 공유
  2. 입력 속성과 출력 이벤트를 활용한 통신
  3. RxJS Observable을 이용한 통신

서비스를 활용한 데이터 공유

Angular에서 서비스를 활용하면 여러 컴포넌트 간에 데이터를 공유할 수 있습니다. 서비스는 ‘@Injectable’ 데코레이터를 사용하여 정의되며, 컴포넌트에서 이 서비스를 주입하여 공통 데이터를 공유할 수 있습니다.

@Injectable()
export class DataService {
  sharedData: any;
}

입력 속성과 출력 이벤트를 활용한 통신

부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하고, 자식 컴포넌트에서 부모 컴포넌트에 이벤트를 발생시키는 방식으로 컴포넌트 간의 통신을 할 수 있습니다. 이를 통해 부모-자식 컴포넌트 간의 상호 작용이 가능합니다.

// 부모 컴포넌트
<app-child [inputData]="parentData" (outputEvent)="handleEvent($event)"></app-child>

// 자식 컴포넌트
@Input() inputData: any;
@Output() outputEvent: EventEmitter<any> = new EventEmitter();

RxJS Observable을 이용한 통신

RxJS Observable을 사용하면 Angular 애플리케이션에서 이벤트 스트림을 쉽게 다룰 수 있습니다. 컴포넌트 간 데이터 흐름 관리 및 비동기 작업을 위해 강력한 도구로 사용됩니다.

// 데이터 공급자 서비스
export class DataShareService {
  private dataSubject: BehaviorSubject<any> = new BehaviorSubject(null);
  data$: Observable<any> = this.dataSubject.asObservable();

  sendData(data: any): void {
    this.dataSubject.next(data);
  }
}

Angular에서 컴포넌트 간의 효과적인 통신을 위해 서비스, 입력 속성 및 출력 이벤트, RxJS Observable 등 다양한 방법을 활용할 수 있습니다. 필요에 따라 각 방법을 적절히 조합하여 적절한 방식으로 컴포넌트 간의 상호 작용을 구성할 수 있습니다.

이와 관련된 자세한 내용은 Angular 공식 문서를 참고하실 수 있습니다.