Angular 笔记03 依赖注入

Angular 官网教程

ModuleInjector (注入器层次结构)

使用 @NgModule()@Injectable() 注解在此层次结构中配置 ModuleInjector

1

ModuleInjector 由 @NgModule.providersNgModule.imports 属性配置。
ModuleInjector 是可以通过 NgModule.imports 递归找到的所有 providers 数组的扁平化。
子 ModuleInjector 是在延迟加载其它 @NgModules 时创建的。

2

@Injectable() 装饰器标识服务类。
该 providedIn 属性配置指定的 ModuleInjector,
这里的 root 会把让该服务在 root ModuleInjector 上可用。

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'  // <--provides this service in the root ModuleInjector
})
export class ItemService {
  name = 'telephone';
}

平台注入器

在 root 之上还有两个注入器,一个是额外的 ModuleInjector,一个是 NullInjector()。