Настраиваемая среда выполнения Angular приложений? Давай поделимся - PullRequest
1 голос
/ 29 мая 2020

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 еще не загружен.

Есть какие-нибудь более чистые реализации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...