[angular] 컴포넌트 통신 구성
Angular 애플리케이션을 개발할 때, 여러 컴포넌트 간에 데이터를 효과적으로 공유하고 상호 작용할 수 있어야 합니다. 이를 위해 Angular는 여러 방법을 제공합니다. 이 블로그 포스트에서는 Angular에서 컴포넌트 간에 효과적인 통신을 구성하는 방법을 안내하겠습니다.
목차
서비스를 활용한 데이터 공유
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 공식 문서를 참고하실 수 있습니다.