Решил это, создав config.module.ts
и config.service.ts
. Модуль конфигурации объявляет провайдеров:
@NgModule({
providers: [
ConfigService,
{
provide: APP_INITIALIZER,
useFactory: (appConfigService: ConfigService) => () => appConfigService.loadAppConfig(),
deps: [ConfigService],
multi: true,
},
],
})
export class ConfigModule {}
Использование службы конфигурации в some.component.ts
:
@Component(...)
export class SomeComponent {
constructor(private configService: ConfigService) { }
private myMethod() {
console.log(this.configService.get.property);
}
}
Для тестов импортируется файл конфигурации json testing:
import { default as appTestConfig } from '../../../../assets/app-config.test.json';
и установить непосредственно в сервисе конфигурации:
TestBed.configureTestingModule({
...,
imports: [
ConfigModule,
...
],
providers: [
{
provide: APP_INITIALIZER,
useFactory: (appConfigService: ConfigService) => () => appConfigService.setConfig(appTestConfig),
deps: [ConfigService],
multi: true,
},
]
}).compileComponents();