Функция APP_INITIALIZER из библиотеки - PullRequest
0 голосов
/ 21 февраля 2020

недавно я обнаружил, что пишу для каждого создаваемого Angular приложения один и тот же метод init_app внутри AppLoadingModule. Поэтому я решил написать библиотеку со всеми общими вещами между моими проектами. Я хочу переместить эту функцию init_app в библиотеку.

Позвольте мне объяснить лучше: в моей библиотеке есть служба, которая загружает файл конфигурации из папки assets. На данный момент в моем app-loading.module.ts для моего angular приложения у меня есть следующий код:

@NgModule({
  imports: [],
  providers: [
    { provide: APP_INITIALIZER, useFactory: init_app, multi: true, deps: [
      ConfigurationService,
      HttpClient
    ]}
  ]
})
export class AppLoadingModule {}

export function init_app(
  configurationService: ConfigurationService,
  http: HttpClient
): () => Promise<any> {
  return (): Promise<any> => {
    return new Promise((resolve, reject) => {
      const env = environment.production ? 'production' : 'development';
      console.log(`init_app:: ${env}`);
      Promise.all([
        configurationService.loadConfiguration(http, env)
      ])
      .then(() => {
        resolve();
      })
      .catch((err) => {
        console.log(`Error fetching configuration: ${err}`);
        // Try continue
        resolve();
      });
    });
  };
}

Есть ли способ переместить или вызвать эту функцию из библиотеки? Я пытался переместить весь app-loading.module.ts в основную библиотеку, но не могу сослаться на environment.ts.

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