-
Notifications
You must be signed in to change notification settings - Fork 2
Dependency injection

app/hero-list.component.ts (constructor)
constructor(private service: HeroService) { }
Angular가 구성 요소를 만들면 먼저 구성 요소에 필요한 서비스를 injector에 요청합니다.
injector는 이전에 생성 한 서비스 인스턴스의 컨테이너를 유지 관리합니다. 요청 된 서비스 인스턴스가 컨테이너에 없으면 injector는 서비스를 Angular로 반환하기 전에 컨테이너에 컨테이너를 추가합니다. 요청 된 모든 서비스가 확인되고 반환되면 Angular는 해당 서비스를 사용하여 구성 요소의 생성자를 인수로 호출 할 수 있습니다. 이것이 dependency injection 입니다.
HeroService의 주입 과정은 다음과 같습니다.
injector에 HeroService가 없는 경우 어떻게 만들 수 있는지 알 수 있을까? 요약하자면 HeroService provider를 injector에 등록한 적이 있어야합니다. provider는 일반적으로 Service Class 자체를 생성하거나 반환 할 수있는 Service입니다.
provider를 Module 또는 구성 요소에 등록 할 수 있습니다. 일반적으로 서비스의 동일한 인스턴스가 모든 곳에서 사용 가능하도록 provider를 root Module에 추가하십시오.
app/app.module.ts (module providers)
providers: [
BackendService,
HeroService,
Logger
],
또는 @Component 메타 데이터의 providers 속성에있는 구성 요소 수준에 등록합니다.
app/hero-list.component.ts (component providers)
@Component({
moduleId: module.id,
selector: 'hero-list',
templateUrl: 'hero-list.component.html',
providers: [ HeroService ]
})
구성 요소 수준에 등록하면 해당 구성 요소의 새로운 인스턴스가 나올 때마다 서비스의 새 인스턴스를 얻게됩니다.
의존성 주입에 대해 기억해야 할 점 :
-
Dependency Injection은 Angular 프레임 워크에 연결되어 어디서나 사용됩니다.
-
injector가 주요 메커니즘입니다.
- injector는 생성 한 서비스 인스턴스의 컨테이너를 유지 관리합니다
- injector는 provider로부터 새로운 서비스 인스턴스를 생성 할 수 있습니다.
-
provider는 서비스를 만드는 방법입니다.
-
provider에 injector를 등록하십시오.
