Перед RC5 я использовал appref форсунку в качестве службы локатора, как это:Хранение экземпляра инжектора для использования в компонентах
Startup.ts
bootstrap(...)
.then((appRef: any) => {
ServiceLocator.injector = appRef.injector;
});
ServiceLocator.ts
export class ServiceLocator {
static injector: Injector;
}
компоненты:
let myServiceInstance = <MyService>ServiceLocator.injector.get(MyService)
Нет w делает то же самое в bootstrapModule(). then() не работает, потому что компоненты, похоже, начинают выполнять перед обещанием.
Есть ли способ хранения экземпляра инжектора перед загрузкой компонентов?
Я не хочу использовать инъекцию конструктора, потому что я использую инжектор в базовом компоненте, который был получен многими компонентами, и я скорее не буду вводить инжектор им всем.
почему бы не сделать распайка в конструкторе AppModule Опережая 'bootstrap: [AppComponent]' и не использовать 'ngDoBootstrap'? Или есть вероятность, что конструктор AppModule может быть вызван после bootstraping? –
@PetrMarek: Я не очень хорошо это помню, но я думаю, что вы получите ApplicationRef только в событии ngDoBootstrap. – dstr
Я сохраняю ссылку Индекса в конструкторе AppModule и, похоже, работает нормально. (не используйте ngDoBootstrap) –