Ich habe eine separate LocalizationModule
außer Kraft zu setzen, die LocaleService
die defaultLanguage
als Abhängigkeit hat enthält:Wie Angular 2 Anbieter von externen Modul
import { Injectable } from '@angular/core';
@Injectable()
export class LocaleService {
constructor(defaultLanguage: string) {
...
}
...
}
So, jetzt muss ich Fabrik liefern diese Abhängigkeit zu erzeugen, wenn Injektor es zu lösen versucht, :
let localeServiceFactory =() => {
return new LocaleService('en-US');
};
export let localeServiceProvider = {
provide: LocaleService,
useFactory: localeServiceFactory
};
Und ich habe in meinem LocalizationModule
:
import { NgModule } from '@angular/core';
@NgModule({
providers: [
i18nServiceProvider
]
})
export class LocalizationModule { }
Dies ist als Bibliothek gebündelt und in npm-Registrierung verpackt. Jetzt möchte ich dieses Modul in meinen vielen Apps verwenden, aber ich muss die Standardsprache konfigurieren können. Wie kann ich i18nServiceProvider mit meinem eigenen Provider überschreiben?
Dies funktioniert nicht und löst immer noch die Ausnahme über keinen Anbieter für Zeichenfolge. – EwanCoder
Sind Sie faul, eines der Module zu laden? –
Ja, mit angular2-router-loader, aber ich versuche, meine LocalizationModule im Haupt-AppModule zu verwenden. Außerdem, um meinen vorherigen Kommentar zu klären, Wenn ich meinen eigenen Provider erstelle und eine andere Standardsprache zur Verfügung stelle - Sprache ist immer noch 'en-US'. Wenn ich meine Bibliothek LocalizationModule so neu anlege, dass sie LocaleService ohne Provider bereitstellt, wird kein Provider für die String-Ausnahme ausgelöst. – EwanCoder