angular依赖注入,2——注入器的使用

一、显示注入器

  injector = ReflectiveInjector.resolveAndCreate([Car, Engine, Tires]);
  let car = injector.get(Car);

二、单例服务

  在一个注入器的范围内,依赖都是单例的,因为他们共享一个Service实例

三、多例服务

  Angular DI是一个分层的依赖注入系统,这意味着嵌套的注入器可以创建他们自己的服务实例。

四、@injectabled的作用

  标识一个类可以被注入器实例化。 通常,在试图实例化没有被标识为@Injectable()的类时,注入器会报错。

  建议为每个服务类都添加@Injectable(),包括那些没有依赖严格来说并不需要它的。因为:

    •   面向未来: 没有必要记得在后来添加依赖的时候添加 @Injectable()

    •   一致性:所有的服务都遵循同样的规则,不需要考虑为什么某个地方少了一个。

五、@Component、@Directive、@Pipe都不需要再加装饰器了,因为他们是@Injectable的一个子类型。