Как внедрить конфигурацию среды в разные угловые модули?

1

У меня есть app.config.ts в моем угловом приложении, которое выглядит примерно так:

export const APP_CONFIG = {
   ....
}

Это генерируется при сборке webpack.

Теперь у меня разные угловые модули, которые находятся в отдельном хранилище, которое используется моим угловым приложением. Некоторые из этих модулей также нуждаются в конфигурациях среды, определенных в app.config.ts. Я устанавливаю эти модули с помощью NPM, поэтому они находятся в папке node_modules.

Моя проблема заключается в том, как я буду поставлять конфигурацию среды для этих модулей, не создавая зависимости для самого приложения?

Я собираюсь сохранить конфигурацию в глобальной переменной или сохранить ее в localStorage при загрузке приложения.

Должен ли я также создавать конфигурацию среды для каждого модуля? Затем обработайте его на сборке webpack?

Любые идеи будут высоко оценены.

Теги:
angular

1 ответ

2
Лучший ответ

Если я понимаю ваш вопрос, вам необходимо передать информацию о конфигурации из основного приложения в собственные внешние библиотеки. Вы можете сделать это с использованием методологии forRoot объяснила в угловых документах здесь.

Внутри вашей внешней Угловой библиотеки измените основной экспортированный модуль, чтобы иметь следующую структуру:

export class MyLibraryModule {
  static forRoot(config: configData): ModuleWithProviders {
    return {
      ngModule: MyLibraryModule,
      providers: [
        {provide: AppConfigModel, useValue: config }
      ]
    };
  }

  constructor(@Optional() config: AppConfigModel) {
    if (config) { /* Save config data */ }
  }

 }

Когда вы импортируете этот модуль в свое приложение, используйте статический метод forRoot и передайте данные конфигурации. Вам нужно будет создать соответствующую модель в своем libarary (AppConfigModel в моем примере), чтобы получить APP_CONFIG, который вы передаете в методе forRoot.

imports: [
    MyLibraryModule.forRoot(APP_CONFIG),
 ]
  • 0
    Спасибо за это. Я попробую это решение сейчас. Вернемся к вам за результат
  • 0
    Это сработало для меня. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню