Angular 6和Injector

时间:2018-05-18 20:05:23

标签: dependency-injection angular6 tree-shaking

Angular 6引入了树可摇动的提供者

@Inject({provideIn:'...'} 

语法。

为了利用树摇动方面,我是通过构造函数还是通过Injector直接注入服务会有所不同吗?

示例:

SEVICE:

@Inject({provideIn:'...'} 
class MyService {}

Consumer1:

@Component()
class MyComponent {
  constructor(s: MyService) {}
}

Consumer2:

@Component()
class MyComponent {
  constructor(@Inject(Injector) aInjector: Injector) {
     const s: MyService = aInjector.get(MyService);
  }
}

在两种情况下都会注入MyService。我希望只有在第一种情况下,AOT编译器才能确定通过静态分析使用该服务。

如果我使用第二个版本会有什么影响? AOT会检测注射器的注射,然后基本上跳过供应商的树摇动吗?或者它是否足够智能来检测从注入器中获取MyService?

0 个答案:

没有答案