1) Service란?
- 특정 비즈니스 로직을 다른 파일에서 관리
- 여러 컴포넌트에서 동일한 로직 사용 시 재사용성 증가
- 서비스를 만들고 필요 시 가져다 사용 (Inject: 주입)
- 주로 shared/services 폴더에 관리
- naming은 보통 ~.service.ts / ~.data.service.ts 등
2) 서비스 클래스
- 다른 클래스에게 특정 서비스(기능)를 부여
import { Injectable } from '@angular/core";
를 통해 다른 클래스에 주입
- Angular 모듈의 providers 섹션에 등록
3) 컴포넌트 클래스
- 서비스를 사용하는 클래스
- 직접 데이터 서비스 코드를 구현해도 무관
- Angular 모듈의 declarations 섹션에 등록
- 서비스를 사용 시 생성자에 주입
- import service 후 constructor에 private으로 주입해 서비스 데이터나 로직 사용
4) 서비스 생성
Angular CLI로 쉽게 서비스 생성 가능
$ ng generate service <서비스명>
5) 의존성 주입(Dependency Injection)
- 클래스가 의존성 객체를 외부에 요청하고 외부에서 이 객체의 인스턴스를 생성해서 주입하는 디자인 패턴
- 의존성 객체는 클래스가 동작하기 위해 필요한 서비스나 객체를 의미함
참고 자료: Angular2(앵귤러2) 서비스(Service) 소개
https://angular.kr/guide/dependency-injection