Angular Service

이동현·2021년 12월 2일
0

Angular

목록 보기
7/8

서비스 주입 이유

중복된 코드가 컴포넌트마다 있을때 중앙집중화를 하여 코드를 간결하게 만든다.
데이터 저장하고 관리하기 위해서 만든다.
그냥 최고다.

서비스 주입 위치

  • App module: 서비스의 동일한 인스턴스가 전체 앱, 모든 컴포넌트, 모든 디렉티브, 모든 서비스에도 사용할 수 있다.
  • App Component: 컴포넌트에 서비스를 주입하면 그 아래 자식 컴포넌트들은 모두 동일한 인스턴스를 가진다.
  • Any other Component: 자식이 없는 단일 컴포넌트에 주입하게 되면 그 컴포넌트만의 새로운 서비스 인스턴스를 가진다.

만약에 App Module이나 App Component에 서비스를 주입하였더라도 그 아래 단일 컴포넌트에 서비스를 주입하면 인스턴스를 덮어쓸 수도 있다.

서비스에 서비스를 주입하는 경우

다른 컴포넌트나 디렉티브처럼 데코레이터가 없기 때문에 주입 받는 서비스에 @Injectable()을 사용한다.

서비스에 서비스를 주입하기 위해선 AppModule에 주입하는 서비스를 추가해야 한다.

서비스로 컴포넌트 간 통신하기

서비스에서 EventEmitter로 이벤트를 발생시키고, 1번 컴포넌트에서는 emit(변수)로 해당 이벤트를 내보낸다. 2번 컴포넌트에서는 .subscribe()로 해당 이벤트를 구독해서 사용하면 된다.

이벤트 이미터는 결국 옵저버블을 래핑하기 때문에 .subscribe를 사용한다.

profile
안녕하세요!

0개의 댓글