Поставщики TreeShakeable в Angular 6 и Injector - PullRequest
0 голосов
/ 18 мая 2018

В Angular 6 представлены провайдеры с возможностью расшатывания деревьев с синтаксисом

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

.

Чтобы воспользоваться преимуществом аспекта расшатывания дерева, имеет ли значение, внедряю ли я службунепосредственно через конструктор или через инжектор?

Пример:

Обслуживание:

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

Потребитель1:

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

Потребитель2:

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

В обоих случаях MyService получает инъекцию.Я ожидаю, что только в первом случае компилятор AOT сможет определить, что служба используется посредством статического анализа.

Каков будет эффект, если я воспользуюсь второй версией?Будет ли AOT обнаруживать инъекцию инжектора, а затем пропускает дрожание дерева для поставщиков?Или он достаточно умен, чтобы обнаружить, что MyService извлекается из инжектора?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...