我在哪里可以在Angular 2项目中放置app wide配置

时间:2017-01-28 13:38:02

标签: angular

在Angular2(使用CLI和Webpack)项目中,我可以使用哪种方法来放置常用配置数据和参数,例如某些api密钥或API URL?许多组件和服务都将使用这些参数。

  • 在专门的服务中?
  • 在yaml或json中通过某种东西解析(同样是服务?)?
  • 在导出对象的模块中?

我们的应用变得越来越大,我试图找到一个解决方案,让应用尽可能轻松高效。

1 个答案:

答案 0 :(得分: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) {
  }
}

这种方法的优点是你可以根据环境使用不同的设置,或者你是否正在运行单元测试等。