使用字符串枚举,你可以试试这个。
我的字符串枚举具有以下定义:
enum StatusEnum {
Published = <any> 'published',
Draft = <any> 'draft'
}
并通过以下方式翻译成js:
{
Published: "published",
published: "Published",
Draft: "draft",
draft: "Draft"
}
我的项目中有一些这样的,因此在共享服务库中创建了小的帮助函数:
@Injectable()
export class UtilsService {
stringEnumToKeyValue(stringEnum) {
const keyValue = [];
const keys = Object.keys(stringEnum).filter((value, index) => {
return !(index % 2);
});
for (const k of keys) {
keyValue.push({key: k, value: stringEnum[k]});
}
return keyValue;
}
}
在您的组件构造函数中初始化并将其绑定到您的模板,如下所示:
在组件中:
statusSelect;
constructor(private utils: UtilsService) {
this.statusSelect = this.utils.stringEnumToKeyValue(StatusEnum);
}
在模板中:
<option *ngFor="let status of statusSelect" [value]="status.value">
{{status.key}}
</option>
不要忘记将 UtilsService 添加到 app.module.ts 中的提供程序数组中,以便您可以轻松地将其注入不同的组件中。
我是打字稿新手,所以如果我错了或者有更好的解决方案,请纠正我。