【问题标题】:Feature Flags in angular 2 application, how to share an object with all componentsAngular 2 应用程序中的功能标志,如何与所有组件共享对象
【发布时间】:2016-06-25 03:28:38
【问题描述】:

我正在尝试在我的 angular2 应用程序中实现功能标志,以便能够发布尚未准备好进行生产的功能。现在我有两个市场,英语和德语市场。我想分别控制这些市场上的功能。

我对如何使用这些标志的想法:

  • 根据给定市场打开/关闭功能。
  • 基于市场的 A-B 测试功能。
  • 在不同的组件上测试新样式(例如,英国市场以一种给定的方法查看某个列表,而德国市场对此的看法不同,也如 A-B 测试)。
  • 让特定用户能够测试特定功能(管理员、普通消费者等等)。

为了启用其中的一些功能,我尝试在我的 Angular2 应用程序中创建两个 Json 文件。

示例:

{
  "PassengersFeature": {
    "displayed": true
  },
  "VehicleFeature": {
    "displayed": false
  },
  "DateFeature": {
    "displayed": false
  }
}

现在,我只添加了一个值 = "displayed" 来测试。

根据给定的市场“EN”或“DE”,我正在加载正确的 json 文件并将其放入我创建的功能对象中。

// When locale is set, load feature flags files.
this.features = this.appService.getFeaturesForLocale();

现在我想与应用程序中的所有其他组件共享这个对象。服务是最好的方法吗?或者你可以使用你在 angularJS 中所做的 $scope 之类的东西吗?

【问题讨论】:

  • 您的方法是否从页面源中排除功能?例如,如果 EN 用户查看您的页面来源,他们可以看到 DE 功能?

标签: angular featuretoggle


【解决方案1】:

截至目前,sharedService 似乎是您的最佳选择。其他方法告诉您有关父/子、兄弟/兄弟组件之间的通信。所以最好的方法是使用sharedService并在bootstrap函数中初始化它。

【讨论】:

  • 好的.. 会尝试的。将等待看看是否有任何其他回复与其他方法。
  • 它实际上工作得很好..我只是不知道这样做是否正确:)
  • 会的。在引导程序中注入 sharedService 以角度实现单例模式。所以你的单个实例在整个应用程序中保持shared
猜你喜欢
  • 1970-01-01
  • 2017-06-12
  • 2017-06-07
  • 1970-01-01
  • 2016-06-12
  • 2021-03-05
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
相关资源
最近更新 更多