Ich benutze Angular2 v2.2.3Angular2 - asynchrone Dependency Injection
I gemeinsames Modul mit forRoot erstellt haben() Funktion, wie folgt aus:
...
public static forRoot(): ModuleWithProviders {
return {
ngModule: CommonsModule,
providers: [
SomeOtherDependency,
{
provide: ConfigService,
useFactory: ConfigFactory,
deps: [Http]
}
]
};
Hier ist meine ConfigFactory:
export function ConfigFactory(http:Http):Promise<ConfigService> {
return http.get('confg/config.json').map(r => {
return new ConfigService(r);
}).toPromise();
}
Ich habe versucht, auch Promise und Observable zurückzugeben.
SomeOtherDependency, die in Providern definiert ist, erfordert ConfigService. Das Problem ist, dass Angular keinen durch Versprechen versprühten Wert einbringt, sondern sich verspricht.
Wie kann ich angular zwingen zu warten, bis Versprechen mit der richtigen Abhängigkeit gelöst wird und dann nur in andere Abhängigkeiten injizieren?
Ich habe verschiedene Ansätze versucht und immer injiziert Wert ist Versprechen oder beobachtbar. Genau wie der Injektor ignoriert, welcher Typ Factory zurückgegeben wurde. Ich muss einige JSON-Dateien laden, bevor die ganze Anwendung startet
Mögliche Duplikat [Angular 2 - Services andere Dienste vor rufen ein Verfahren raubend] (http://stackoverflow.com/questions/38127741/angular-2-services-consuming-andere-services-before-call-a-method) – estus
Siehe auch Kommentare zu dieser Frage http://stackoverflow.com/questions/40522938/lazy-loading-module -with-app-initialisierer? noredirect = 1 # comment68288686_40522938 – yurzui
Ich habe diese Themen schon gesehen, bevor ich gefragt habe. Sie arbeiten nicht für mich. –