angular - 如何在课堂上将数字转换为枚举打字稿
问题描述
我有这门课
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 对象的列表...
但它返回“未定义”,知道我做错了什么吗?
解决方案
当您设置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]);
});
推荐阅读
- python - Numpy 无法在 Spyder 中导入
- android - 使用 Android 导航组件从子片段(非全屏)全屏打开片段
- docker - 如何在 docker 容器中读取 docker run 参数(具体为 -p)
- java - 如何将基于多个条件的标头添加到 HttpRequest Java 11?
- arduino - Arduino IR 发送 ASCII,等待,发送,读取
- sapui5 - 如何使用按钮使简单的表单响应
- python - 函数式编程中的“部分函数”到底是什么意思?
- sql - 如何 ROUND 双精度类型值?
- python - 为 pandas 中的每个类查找最相关的列
- graphite - 石墨图像渲染在漫长的传说下留下了很多空白