Я пытаюсь расширить библиотеку Angular, но моей библиотеке для работы потребуются определенные настройки для одной из служб. Я надеялся, что смогу каким-то образом использовать шаблон декоратора (не декоратор TypeScript) для повторного предоставления сервиса через фабрику. Это может потребовать внедрения ранее объявленной службы в фабрику и либо изменить существующую реализацию, либо вернуть альтернативную версию, которая использует оригинальную. Похоже, что мой фабричный метод вызывается.
export function decoratedTranslateServiceFactory(tranlateService: TranslateService) {
// either make changes to translateService or return an
// alternate version that uses the original one
// (i.e. new MyTranslateService(translateService))
}
@NgModule({
imports: [TranslateModule],
providers: [
{
provide: TranslateService,
useFactory: decoratedTranslateServiceFactory,
deps: [TranslateService] // <-- Same type as provided
}
]
})
export class MyTranslateModule {}
@NgModule({
imports: [TranslateModule, MyTranslateModule]
})
export class AppModule {}
Я надеюсь, что модифицированная версия TranslateService (из фабрики, предоставленной моим модулем) будетв остальной части приложения. Я надеялся, что смогу использовать этот или другой подход для расширения или упаковки существующего сервиса. Это вообще возможно?
Спасибо за любой совет.
Редактировать: Добавление StackBlitz .