javascript - 如何在 HTML angular 中使用 const 枚举
问题描述
我正在使用最新版本Angular
并尝试在 HTML 中访问 const 枚举,但我不确定我该怎么做。这是枚举
export const enum InputTypes {
DragDrop = "dragDrop",
Text = "text",
Search = "search"
}
由于枚举导出问题,我需要const
在前面声明。enum
我尝试过的事情
*ngIf="inputTypes.Search"
第一种方法
export class ChipsComponent implements OnInit {
constructor() { }
ngOnInit(): void {}
public get inputTypes(): typeof InputTypes {
return InputTypes;
}
}
第二种方法
export class ChipsComponent implements OnInit {
constructor() { }
ngOnInit(): void {}
inputTypes = InputTypes;
}
错误
'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query
tsconfig.json
"compilerOptions": {
"preserveConstEnums": true
}
如果我没有将枚举声明为 const,则上述方法将起作用,但不确定 const 值
有一个未解决的问题https://github.com/angular/angular/issues/25963一种解决方案是
templateImports: [someConstant, UserStatus, isDevMode]
这不起作用,但以下可以:
templateImports: {someConstant, UserStatus, isDevMode}
即使这个不起作用,也会出错templateImports
解决方案
TypeScript 支持Literal Types,它是常量字符串,将该功能与 Unions 结合起来,您的结构与枚举非常相似,但问题要少得多。
示例:
type InputTypes = 'dragDrop' | 'text' | 'search';
export class ChipsComponent {
@Input() appType: AppType;
}
<div *ngIf="appType === 'text'">
...
</div>
文字类型只是预定义的字符串,因此在 Angular 模板上使用它没有问题,它甚至可以在您想要的编辑器/IDE 上完成代码。有趣的是,TypeScript 编译器将阻止任何使用与您定义的字符串值不同的字符串值的编译。
推荐阅读
- eclipse-ditto - 无法在 Eclipse Ditto 中检索响应消息
- python - 了解 Moore-Penrose 逆的 numpy 代码背后的逻辑
- javascript - 如何使用 JavaScript 获取 JSON 树模式的属性值?
- javascript - Angular 8 使用 FormControl 将文件上传到 Django 服务器
- javascript - 显示仅包含图像的类别
- xcode - 如何在 XCode Swift 5 中通过按钮移动播放简单的淡入淡出动画
- sass - Gatsby 使用 gatsby-plugin-sass 开发失败
- python - 将图例添加到使用 Matplotlib 和 Numpy 制作的图形中(来自 txt 文件的多个图)
- git - 在 cirrus-ci 下 git describe --tags --always 返回 sha1 而不是 tag
- javascript - 在 Vuetify 中隐藏其他组件后展开卡片组件并居中