Посоветуйте как правильно подключить библиотеку
Есть три библиотеки: ParentA, ChildA и ChildB.
Библиотеке ParentA при подключении требуется объект parent_a_config: ParentAModuleOptions при подключении в app.module.ts:
// app.module.ts
import 'ParentAModuleOptions, ParentAModule' from '@example/parent-a';
const parent_a_config: ParentAModuleOptions = {
a: environment.a,
b: environment.b
};
// ...
imports: [
// ...
ParentAModule.forRoot(parent_a_config),
// ...
],
// ...
// parent-a.module.ts
export class ParentAModule {
static forRoot(options?: ParentAModuleOptions): ModuleWithProviders {
return {
ngModule: ParentAModule,
providers: [
{
provide: PARENT_A_OPTIONS_TOKEN,
useValue: options,
}
]
};
}
}
// parent-a.service.ts
// ...
constructor(
@Inject(PARENT_A_OPTIONS_TOKEN) private config: ParentAModuleOptions
) {
this.setConfig(config);
}
// ...
Библиотеки ChildA и ChildB используют сервис библиотеки ParentA. Это значит в package.json файле каждой библиотеки прописано следующее: Код:
{
// child-a.service.ts
import 'ParentAService' from '@example/parent-a';
// ...
constructor(
@Inject(CHILD_A_OPTIONS_TOKEN) private config: ChildAModuleOptions,
private parent_a_service: ParentAService
) {
this.setConfig(config);
}
// ...
Но ведь библиотеке ParentA нужно передать объект конфига, а я не понимаю как это сделать ВНЕ app.module.ts. И ещё, библиотеки ChildA и ChildB используют сервис ParentAService, так как у каждой библиотеки установлена в node_modules своя ParentA библиотека. Это получается что образуется два экземпляра класса ParentAService? Разве экземпляр класса (любого) сервиса не должен быть дитём синглтона? Подскажите как архитектурно правильно подойти в использовании ParentAService в ChildA и ChildB библиотеках. |
Цитата:
Цитата:
|
Цитата:
Глобальная установка конфигов (DI) всех используемых библиотек происходит в app.module.ts, и это, на мой взгляд, удобно. Спасибо. |
| Часовой пояс GMT +3, время: 12:46. |