Przed RC5 używałem appref wtryskiwacz jako lokalizator usług takich jak to:Zapisywanie instancji wtryskiwacza do stosowania w elementach
Startup.ts
bootstrap(...)
.then((appRef: any) => {
ServiceLocator.injector = appRef.injector;
});
ServiceLocator.ts
export class ServiceLocator {
static injector: Injector;
}
składniki:
let myServiceInstance = <MyService>ServiceLocator.injector.get(MyService)
Nie w robi to samo w bootstrapModule(). then() nie działa, ponieważ wydaje się, że komponenty zaczynają działać przed obietnicą.
Czy istnieje sposób na zapisanie instancji wtryskiwacza przed załadowaniem komponentów?
Nie chcę używać wtrysku konstruktora, ponieważ używam wtryskiwacza w komponencie bazowym, który pochodzi z wielu komponentów i raczej nie wstrzykiwam wtryskiwacza do wszystkich z nich.
dlaczego nie zrobić assigment w konstruktorze AppModule odchodzi 'bootstrap: [AppComponent]' i nie używać 'ngDoBootstrap'? Czy istnieje szansa, że konstruktor AppModule może zostać wywołany po bootstrowaniu? –
@PetrMarek: Nie pamiętam tego całkiem dobrze, ale myślę, że dostajesz tylko ApplicationRef w zdarzeniu ngDoBootstrap. – dstr
Przechowuję referencję Injector w konstruktorze AppModule i wygląda na to, że działa dobrze. (nie używaj ngDoBootstrap) –