angular - 如何通过索引/序数迭代Angular 5中的枚举?
问题描述
我在 Angular 5 应用程序中有以下枚举:
export enum Month {
JAN='January',
FEB='February',
MAR='March',
APR='April',
MAY='May',
JUN='June',
JUL='July',
AUG='August',
SEP='September',
OCT='October',
NOV='November',
DEC='December'
}
我想要做的是迭代这些值并将它们与日期字段进行比较,我在代码中的某处类似于:
date.getMonth() which return number 0-11
我能够遍历枚举,但我无法获得序数!我已经尝试了两种解决方案:
for (let month in Month) {
var months = Object.keys(Month);
for (let month of months)
两种解决方案都返回字符串,例如“JAN”。
解决方案
您可以创建枚举实例并通过 Object.keys 方法对其进行迭代
TS文件
export class AppComponent {
name = 'Angular';
month = Month;
constructor(){
}
keyinenum() : Array<string> {
var keys = Object.keys(this.month);
return keys.slice();
}
}
HTML
<div *ngFor="let item of keyinenum()">
{{ item }}
</div>
更新:
如果您只想从 0-11 获取月份,您可以使用此方法
getValueByIndex(inputindex) {
var keys = Object.keys(this.month);
let result = "";
keys.forEach((obj, index) => {
if (inputindex == index) {
result = Month[obj];
}
});
return result;
}
https://stackblitz.com/edit/angular-iterate-enum?file=src/app/app.component.ts
推荐阅读
- python - 如何使用 PIL 裁剪多张图像?
- jsf - 如何通过 jee-7 中的 mdb-> websocket 更新数据表单元格?(db pk,clientId 映射)
- laravel - 带有 Synology NAS 的 Laravel 应用程序
- java - spring-data-couchbase - 带有 java.util.Date 方法参数的 N1QL 查询
- javascript - Node.js Express 如何在中间件之间传递数据?
- axapta - Axapta V4 批处理作业表权限问题
- c# - C# 从 DataGridView 插入 MySQL 后数据被截断
- google-chrome - Chrome 开发工具不会触发媒体查询?
- security - 在经典 ASP 中将 httponly 标志设置为双参数 cookie
- python - Spark:spark.sql 和 sqlCtx.sql 有什么区别