【问题标题】:Typescript enum stored in json存储在 json 中的 Typescript 枚举
【发布时间】:2017-01-28 02:18:34
【问题描述】:

我正在使用 Typescript 和 Angular 2 我想从一些 json 数据动态创建枚举。 例如,我想为下拉菜单设置枚举,并想从 json 中获取选项。如何做到这一点?

【问题讨论】:

  • 听起来你只需要显示一个项目列表,为什么还要麻烦枚举?

标签: json angular typescript enums


【解决方案1】:

在 Typescript 中,enums 被转译为 JS 数组(参见 Enums in TypeScript: what is the JavaScript code doing?)。

所以,如果你想动态加载一个枚举,你只需要加载一个数组。

但是如果你的目标是从这个枚举中创建一个选择,你应该明确地反序列化你的 json 并将它传递给一个嵌入了 select 的组件,使用 *ngFor 从你的对象创建 options。

最简单的方法是以这种方式格式化您的 JSON:

{
   "selectData":[
                     { 
                      "key":"foo", 
                      "value":"bar"
                     }
                ]
}

通过这种方式,您可以加载 json 并在 selectData 数组上进行迭代,使用 key 和 value 值来创建您的选择。

【讨论】:

  • 嗯,这正是我正在寻找的格式。但是如何将其解析为枚举。我通过 http.get 获取数据并在我的页面加载时订阅它。
  • @DilyanGeorgiev 为什么你需要枚举呢?这在运行时甚至都没有意义。枚举仅在构建和编译时可用。
  • 枚举不是你可以在运行时创建的,因为运行时部分是 Javascript。因此,正如我所说,枚举只是 array。您只需要将 JSON.parse json 结果放入您的 subscriber 并使用数据绑定将 yourJsonObj.selectData 传递给您的选择组件。
  • 好的,我明白了!谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
相关资源
最近更新 更多