Использование InjectorFactory для routerProviders или routerProvidersHash можно автоматизировать?

Я загружаю angular с runApp и параметром namend «createInjector», чтобы определить routerStrategy «routerProviders» или «routerProvidersHash». Есть ли способ автоматизировать это определение, как я хочу сделать это в своей первой строке? Для локальной разработки я хочу использовать «routerProvidersHash», а для реальной среды хочу использовать «routerProvider».

const List<Provider<Object>> routerStrategy = Environment.isLive() ? routerProviders : routerProvidersHash;
@GenerateInjector([
  routerStrategy,
  ClassProvider(Client, useClass: BrowserClient),
])
final InjectorFactory injector = self.injector$Injector;

void main() {
  runApp(ng.AppComponentNgFactory, createInjector: injector);
}

Проблема в том, что это значение должно быть константой, но тогда я не могу создать такую ​​константу. У меня нет идеи сделать это более гибким :(


person 4stern    schedule 24.06.2019    source источник


Ответы (1)


Он специально создан специально, как если бы он был динамическим, как вы предлагаете, его нельзя было бы оптимизировать.

Я думаю, что вы можете сделать два инжектора, один для разработки и один для производства, и решить, какой из них использовать при вызове runApp.

person Ted Sander    schedule 25.06.2019
comment
Сделал по вашему и все работает! :) Тем не менее, это плохой шаблон для переключения этого поведения. - person 4stern; 27.06.2019
comment
Поскольку этот фреймворк создан для масштабирования, мы иногда жертвуем шаблонами ради производительности. То, что инжекторы не являются динамическими во время выполнения, позволяет нам сделать вещи намного более производительными. Надеюсь ты понимаешь. - person Ted Sander; 28.06.2019
comment
Я уже так думал :) ... тем не менее: хорошая работа, мне нравятся dart и angularDart - спасибо за это :) - person 4stern; 04.07.2019