Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在html模板中访问常量枚举_Html_Angular_Typescript_Templates_Enums - Fatal编程技术网

在html模板中访问常量枚举

在html模板中访问常量枚举,html,angular,typescript,templates,enums,Html,Angular,Typescript,Templates,Enums,假设我有一个常量枚举: export const enum MyConstEnum{ Value1 = 'Value1', Value2 = 'Value2', Value3 = 'Value3' } 现在我想在我的角度模板中使用它: <span *ngIf="name === MyConstEnum.Value1">This has some value</value> 有一种解决方案可以在模板的组件中创建属性 pub

假设我有一个常量枚举:

export const enum MyConstEnum{
    Value1 = 'Value1',
    Value2 = 'Value2',
    Value3 = 'Value3'
}
现在我想在我的角度模板中使用它:

<span *ngIf="name === MyConstEnum.Value1">This has some value</value>
有一种解决方案可以在模板的组件中创建属性

  public get MyEnumInComponent() {
    return MyEnum;
  }
MyEnumInComponent
将可以在HTML中访问。 但是,我有
常量enum


为此,我不能像上面那样定义属性。解决方案是什么(除了将
const enum
更改为
enum
)?

我可以在这个链接上看到https://github.com/angular/angular/issues/25963' 这是一个已知的问题,特别是const enum


常量枚举只能使用常量枚举表达式,与常规枚举不同,它们在编译过程中被完全删除。常量枚举成员在使用站点处内联。这是可能的,因为常量枚举不能有计算成员。

inted use just enums您可以简单地在组件中导入并在新组件类属性中重新初始化,如下所示

export enum MyConstEnum {
  Value1 = "Value1",
  Value2 = "Value1",
}

export class MapComponent implements OnInit{
 public constEnum = MyConstEnum
}

现在,由于它在一个类属性中,您可以使用
constEnum

将它与html一起使用,如果TypeScript不会删除发出的JavaScript代码中的const-enum声明,这将是可能的

有专门的编译器选项
preserveConstEnums

tsconfig.json

{
  "compilerOptions": {
    ...
    "preserveConstEnums": true,
    ...
  },
  ...
}
现在,让我们假设你有

const enum.ts

export const enum MyConstEnum {
    Value1 = 'Value1',
    Value2 = 'Value2',
    Value3 = 'Value3'
}
您可以在组件中导入它,如:

import * as constEnumModule from './const-enum';

class SomeComponent {
  MyConstEnum = (constEnumModule as any).MyConstEnum;
}
最后,它应该在您的模板中可用于此组件:

<span *ngIf="name === MyConstEnum.Value1">This has some value</value>
这有一定的价值

您能在这里详细说明这个问题吗?我不知道什么不起作用,也不知道你真正想要完成什么。我可以在这个链接“”上看到这是一个问题,需要修复。还有一些人提出了一个解决方案,看看是否有帮助。@TarangRathod你能举个例子吗?这是“常量枚举”而不是“枚举”?@PhilippMeissner我已经更新了我的问题。@PhilippMeissner检查我的解决方案!什么是模板导入?Angular docs中templateImports的定义在哪里?您自己试过了吗?这只是建议,没有实施。我没有试过。我说我发现了这些信息,如果可能有用的话。这有用吗?是否有任何示例?如果是“const enum”,则无法执行此操作。这将导致错误:“const”枚举只能在属性或索引访问表达式中使用,或…在构造函数或生命周期挂钩中使用!你能给我举个例子吗?因为我还是犯了同样的错误。我有:export类MyComponent实现了OnInit{},如果我在那里添加,那就是一个错误。我在构造函数中尝试过,但仍然不起作用。我做错了什么事。@renathy他删除了
const
import * as constEnumModule from './const-enum';

class SomeComponent {
  MyConstEnum = (constEnumModule as any).MyConstEnum;
}
<span *ngIf="name === MyConstEnum.Value1">This has some value</value>