BLUF: Как вы, ребята, обрабатываете конвейер автоматического развертывания в angular?
Точка: я недавно столкнулся с требованием разрешить внедрение внешних конфигураций во время выполнения в angular приложения. Хотя мне удалось это понять, я не очень уверен в надежности или возможности обновления используемых мной методов. Так что мне интересно, есть ли предпочтительный метод извлечения конфигураций после компиляции?
MY Method: голая минимальная версия
app.module.ts
export function injectServiceInit(service: ConfigService){
return (): Promise<any> => {
return service.loadConfig();
}
}
@NgModule({
declarations: [...],
Imports: [...],
providers: [
ConfigService,
{
provide: APP_INITIALIZER,
useFactory: injectServiceInit,
deps: [ConfigService],
multi: true
}
]
})
config.service.ts
import ...
@Injectable({
providedIn: 'root'
})
export class ConfigService{
private http: HttpClient;
private appConfig: IAppConfig;
constructor(private httpBackend: HttpBackend){
this.http = new HttpClient(httpBackend);
}
loadConfig() {
return this.http
.get<IAppConfig>('assets/config.json')
.toPromise()
.then((data) => {
this.appConfig = data;
});
};
public getConfig() {
return this.appConfig;
}
}
С помощью этого метода я могу получить файл json из папки ресурсов проекта на сервере во время выполнения поэтому нам не нужно перестраивать, чтобы отразить какие-либо изменения. Но это требует, чтобы программа дождалась загрузки файла конфигурации, прежде чем он сможет выполнить, и мне пришлось изменить свой файл main.ts , чтобы не учитывать конфигурацию среды, потому что это происходит до начальной загрузки, поэтому config. json еще не загружен.
Есть какие-нибудь более чистые реализации?