Посоветуйте как правильно подключить библиотеку
Есть три библиотеки: 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, время: 15:50. |