У меня есть отдельный LocalizationModule
, который содержит LocaleService
, который имеет defaultLanguage
как зависимость:Как переопределить Угловые 2 поставщика от внешнего модуля
import { Injectable } from '@angular/core';
@Injectable()
export class LocaleService {
constructor(defaultLanguage: string) {
...
}
...
}
Так что теперь я должен предоставить завод, чтобы создать эту зависимость, когда инжектор пытается решить ее :
let localeServiceFactory =() => {
return new LocaleService('en-US');
};
export let localeServiceProvider = {
provide: LocaleService,
useFactory: localeServiceFactory
};
И у меня в LocalizationModule
:
import { NgModule } from '@angular/core';
@NgModule({
providers: [
i18nServiceProvider
]
})
export class LocalizationModule { }
В комплект поставки входит библиотека и упакован в реестр npm. Теперь я хочу использовать этот модуль в своих многочисленных приложениях, но мне нужно настроить язык по умолчанию. Как я могу переопределить i18nServiceProvider с моим собственным провайдером?
Это не работает и по-прежнему вызывает исключение из-за отсутствия поставщика для строки. – EwanCoder
Вы ленивы загружаете какие-либо модули? –
Да, используя angular2-router-loader, но я пытаюсь использовать свой LocalizationModule в основном AppModule. Кроме того, чтобы прояснить мой предыдущий комментарий, если я создаю своего собственного провайдера и предоставят другой язык по умолчанию - язык по-прежнему «en-US». Если я перестрою свою библиотеку LocalizationModule, чтобы она предоставляла LocaleService без провайдера, она не будет вызывать провайдера для исключения строк. – EwanCoder