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?