【问题标题】:How to convert number to enum typescript in class如何在课堂上将数字转换为枚举打字稿
【发布时间】:2023-03-25 06:06:01
【问题描述】:

我有这门课

export class InstructorEvent {
EventID: number;
EvaluationMethod: number;

get EvalMethodEnum(): EvaluationMethodEnum {
    return 
EvaluationMethodEnum[EvaluationMethodEnum[this.EvaluationMethod]];
     }

 }


export enum EvaluationMethodEnum {
    None = -1,
    Test = 0,
    AssessmentForm = 1,
    PassFailDecision = 2,
    ParticipantSelfDeclaration = 3,
    ActivityAccess = 4,
    GradeDecision = 5,
    Courseware = 6,
    SCORM = 7,
    Attendance = 8,
    ObjectiveEvaluationManualGrade = 9,
    ObjectiveEvaluationPassFail = 10,
    ObjectiveEvaluationNone = 11,
    ObjectiveEvaluationCustom = 12,
    ObjectiveEvaluationAutoGrade = 14
}

现在我正在从服务器获取所有数据,如下所示

this._service.getInstructorEvaluations(this.InstructorID).then(result => {
  if (result) {
    console.log(result);
    this.Events = result;

this.Events.forEach(element => {
  console.log(element.EvalMethodEnum);
    });
  }
});

“Events”属性包含 InstructorEvent 对象的列表...

但它返回“未定义”,知道我做错了什么吗?

【问题讨论】:

    标签: angular typescript enums angular6


    【解决方案1】:

    当您设置this.Events = result 时,this.Events 中的项目不会被识别为 InstructorEvents,如果您只是强制转换它们,则不会初始化其中的属性。您需要定义一个构造函数并显式创建 InstructorEvents。您的 EvalMethodEnum 函数中还有一个小错字。

    这应该可行:

    this.Events.forEach((element) => {
        element = new InstructorEvent(element.EventId, element.EvaluationMethod);
        console.log(element.EvalMethodEnum);
    });
    
    export class InstructorEvent {
        EventId: number;
        EvaluationMethod: number;
    
        constructor(eventId: number, evaluationMethod: number) {
            this.EventID = eventID;
            this.EvaluationMethod = evaluationMethod;
        }
    
        get EvalMethodEnum(): EvaluationMethodEnum {
            return EvaluationMethodEnum[this.EvaluationMethod];
        }
    }
    

    或者对于更简单的方法,您可以取消 EvalMethodEnum 调用并改为这样做:

    this.Events.forEach((element: InstructorEvent) => {
        console.log(EvaluationMethodEnum[element.EvaluationMethod]);
    });
    

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 2019-10-30
      • 2018-11-09
      • 2020-01-17
      • 2018-07-05
      • 2020-06-27
      • 2023-04-01
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多