2017-01-28 4 views
0

Какой метод я могу использовать в проекте Angular2 (с использованием CLI и Webpack) для размещения общих данных и параметров конфигурации, таких как некоторые ключи api или URL-адреса API? Эти параметры будут использоваться многими компонентами и услугами.Где можно разместить конфигурацию приложения в проекте Angular 2

  • В специальном сервисе?
  • В yaml или json разбирается что-то (опять-таки услуга?)?
  • В модуле экспорта объекта?

Наше приложение становится довольно большим, и я стараюсь найти решение, чтобы приложение было максимально легким и эффективным.

+0

это зависит s на системе сборки. Я предполагаю, что ваши URL-адреса API отличаются, если вы запускаете приложение в локальной или производственной среде. Что вы используете, SystemJS, Webpack? – Matt

+0

У нас действительно две среды: dev, prod. Мы используем webpack, поскольку это проект Angular-CLI. Обновлен вопрос. – BlackHoleGalaxy

+0

Я не думаю, что есть общий способ этого. Существует стартовый проект webpack: https://github.com/AngularClass/angular2-webpack-starter, который обеспечивает механизм настройки переменных среды во время сборки. Взгляните на объект METADATA в webpack.dev.js и webpack.prod.js. Может быть, вы можете сделать от них. – Matt

ответ

1

Вам не нужно использовать полнофункциональный сервис или модуль для хранения данных конфигурации.

Вы можете поместить свою информацию конфигурации в const и выставить переменную через инъекции зависимостей:

const SETTINGS = { 
    apiUrl: 'someUrl', 
    apiKey: 'someKey', 
    // ... 
}; 

// Then, in your AppModule, declare the value for DI 
@NgModule({ 
    providers: [ 
    { provide: 'SETTINGS', useValue: SETTINGS }, 
    // ... 
    ] 
}) 

Затем, когда вам нужно получить доступ к конфигурации (в службе или компонента ...), инъекционные это:

import { Inject } from "@angular/core"; 

export class MyComponent { 
    constructor(@Inject('SETTINGS') private settings: any) { 
    } 
} 

Достоинством такого подхода является то, что вы можете использовать различные настройки в зависимости от среды, или вы используете юнит-тесты и т.д.

+1

Un grand merci;) Спасибо. – BlackHoleGalaxy

Смежные вопросы