假设我有一个常量枚举:
export const enum MyConstEnum{
Value1 = 'Value1',
Value2 = 'Value2',
Value3 = 'Value3'
}
现在我想在我的Angular 模板中使用它:
<span *ngIf="name === MyConstEnum.Value1">This has some value</value>
但是,这是不可能的,因为MyConstEnum
不被模板看到,所以问题是如何在Angular html模板中访问const enum
?
如果枚举不是这样的常量
export enum MyEnum{
Value1 = 'Value1',
Value2 = 'Value2',
Value3 = 'Value3'
}
有一个在模板组件中创建属性的解决方案
public get MyEnumInComponent() {
return MyEnum;
}
和MyEnumInComponent
将在HTML中访问。然而,我有const enum
。
对于这个我不能像上面那样定义属性。解决方案是什么(除了将const enum
更改为enum
)?
4条答案
按热度按时间9q78igpj1#
我可以在此链接https://github.com/angular/angular/issues/25963上看到,这是已知问题,并且是专门针对const枚举的。
dz6r00yl2#
如果TypeScript不清除发出的JavaScript代码中的const枚举声明,则可能出现这种情况。
有专门的编译器选项
preserveConstEnums
用于此目的:现在,假设你有
您可以在组件中导入它,如:
最后,它应该在此组件的模板中可用:
bis0qfac3#
你可以在你的组件中创建一个与枚举同名的属性,并且你可以像在ts文件中一样访问枚举。你可以通过导入它或者在ts文件中声明它来实现这一点。
在html模板中:
tjvv9vkg4#
我通过将const枚举类型替换为类中的静态属性来绕过这个问题,如下所示: