【问题标题】:Angular: seperate common env variables to commonEnv.ts fileAngular:将公共环境变量分开到 componEnt.ts 文件
【发布时间】:2019-09-21 16:39:47
【问题描述】:

在我的 Angular 项目中,我有多个不同的环境配置来支持不同的国家/地区,我为每个配置创建了一个环境文件,例如

  • localIn
  • 驻场
  • prodIn
  • localBr
  • stagBr
  • prodBr
  • localAu
  • stagAu
  • 产品
  • .....

等等

  1. 但在所有这些文件中,我有 60% 的变量是通用的,即 60% 的变量的值在所有文件中都是相同的。

  2. 其余 30% 的变量值仅因国家/地区而异,即印度的变量对于 local、stag 和 prod 相同,仅在巴西、澳大利亚和其他国家/地区发生变化。

  3. 现在每个文件上最后 10% 的变量值更改。

我正在寻找一种解决方案,我可以在其中拥有类似 commonEnv.ts 的文件,我可以在其中保留所有常见的环境变量。

然后是 commonIndia.ts,我可以在其中保留所有特定于国家/地区的公共变量,例如印度特定变量。

最后是每个配置的单独文件,这些文件已经在 Angular 中看到了。


在 Angular 中可以这样做吗?请告诉我怎么做。

如果没有,我该如何解决我的问题?

此外,如果我们可以将 commonEnv.ts、common-contry.ts 和 config.ts 文件合并到每个 Angular 服务/构建上的单个 env.ts 文件中,那就太好了。

【问题讨论】:

  • 如果它们很常见并且不是特定于环境的,为什么不转向代码。环境文件是每个环境都不同的文件

标签: angular typescript


【解决方案1】:

作为一个简单的解决方案,您可以创建一个CommonEnv 对象并将其用作其他环境对象的基本配置

common-env.ts

export  const CommonEnv = {
     apiUrl : '127.0.0.1/api',
     production : true
}

像这样将 CommonEnv 导入到其他环境对象中

环境.ts

export const environment = {
  ...CommonEnv,
  production : false // ? change a proprty value come from CommnEnv
};

environment.prod.ts

export const environment = {
   ...CommonEnv,
   apiUrl : '216.58.206.174/api' // ? reset the apiUrl
};

【讨论】:

  • 很好,过去有这个问题。没有想到覆盖地图键的技巧。
  • @Antoniossss 你说的地图键是什么意思?
  • 设置对象道具两次 - 将导致覆盖第一个。 JS 对象是地图。
  • 是的,这正是发生的事情,如果没有展开运算符 const environment = Object.assign(Object.assign({}, CommonEnv), { production: false });,它看起来像这样
  • 我更喜欢第一个变体。它具有语法清晰的优点,并且只允许覆盖选定的道具。皮蒂我之前没想到。不错 1
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多