当前位置: 首页 > 知识库问答 >
问题:

在angular HTML页面中使用Typescript枚举的正确方法(例如angular ng-class)

白晋鹏
2023-03-14

新的角度和打字。

我有如下的打字记录枚举

public enum MyEnum{
   A = 0,
   B = 1,
   C = 2
}
$scope.myLetter: MyEnum = MyEnum.B;
<div ng-class="{classA: myLetter === 0, classB: myLetter === 1, classC: myLetter === 2}">Test panel</div>
$scope.getClass(value: myLetter): string{
    if(value === MyEnum.A)
    return 'classA';

    if(value === MyEnum.B)
    return 'classB';

    if(value === MyEnum.C)
    return 'classC';
}
<div ng-class='getClass(myLetter)'>Test panel</div>

选项3:'ryannerd'在Angular.js和ng-switch-when-emulating enum给出的答案

对我来说,选项2更好,其余的选项将ng-class值作为字符串进行检查,这不会给我们提供静态类型强制。请分享你的观点或任何其他更好的选择,如果你有。

共有1个答案

萧献
2023-03-14

从控制器作用域方法获取类名

我不喜欢让控制器知道类名的想法。

>

  • 您可以将转换器函数添加到作用域中:

    $scope.myEnumName = (value: MyEnum) => MyEnum[value];
    
    ng-class="{'A':'ClassA', 'B':'ClassB', 'C':'ClassC'}[myEnumName(myLetter)]"
    
    $scope.switchMyEnum =
        <T>(value: MyEnum, cases: { [value: string]: T }) => cases[MyEnum[value]];
    
    ng-class="switchMyEnum(myLetter, {'A':'ClassA', 'B':'ClassB', 'C':'ClassC'})
    
    $scope.switchMyLetter =
        <T>(cases: { [value: string]: T }) => cases[MyEnum[$scope.myLetter]];
    
    ng-class="switchMyLetter({'A':'ClassA', 'B':'ClassB', 'C':'ClassC'})
    

    如果要在多个作用域中使用多个枚举:

    angular.module("MyApp", [])
      .run(["$rootScope", (root: {}) => {
        function registerSwitchers(...enumInfos: [string, { [value: number]: string }][]) {
          enumInfos.forEach(enumInfo => {
            var switcherName = enumInfo[0]
            var enumType = enumInfo[1]
            root[switcherName] = (value: any, cases: { [value: string]: any }) => cases[enumType[value]];
          });
        }
        registerSwitchers(
          ["switchMyEnum1", MyEnum1],
          ["switchMyEnum2", MyEnum2]);
      }])
    

  •  类似资料:
    • 本文向大家介绍Java枚举类型在switch语句正确使用方法详解,包括了Java枚举类型在switch语句正确使用方法详解的使用技巧和注意事项,需要的朋友参考一下 很多人也许会尝试写下这样的代码: 正确的写法: 如果需要根据类型的名称返回枚举实例,可以在枚举类中加入方法 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

    • 我正在Java Spring/Hibernate中使用Swagger-UI。Swagger UI版本是2。 我很难使用枚举。

    • 问题内容: 因此,我对Java枚举中是否可以包含函数感到困惑。我正在制作一个简单的html编辑器,并希望使用枚举来表示html标签,是的,我知道这不是解决问题的最佳方法,而是我小组决定实现它的方法。 所以我一直在尝试做这样的事情,但是当我试图称其为静态方法时,我想我想知道这是否正确,或者是否有更好的方法来实现它而不是公开成为 问题答案: 是的,Java枚举可以具有功能。 http://docs.o

    • 打印稿enum似乎是一个自然与盎 请注意,这不同于如何cre

    • 本节介绍枚举类型的定义及其使用,需要定义一组相同主题的常量数据时,应该立即想到枚举类型。在学习过程中,需要注意枚举类型的正向映射和反向映射,可以通过编译后的 JavaScript 源码进行分析,为什么可以进行反向映射。 1. 慕课解释 使用枚举我们可以定义一些带名字的常量。TypeScript 支持数字的和基于字符串的枚举。 2. 定义及使用场景 枚举类型弥补了 JavaScript 的设计不足,

    • 枚举(enum)是定义一组命名常量的机制,用这种方式定义的常量被称作枚举常量 注:枚举常量的数据类型是整数 使用方法: 下面我们以文本语音转换为例子,说明一下枚举常量的使用方法。 首先我们在窗体上放入语音识别控件,按钮,通用对话框这些基本控件,来制作一个简单的语音文本朗读程序。 1 如果您使用过语音识别控件,就应该知道,使用这个控件的第一步就是先创建它,而创建命令的两个参数就是枚举常量,我们可以看