#angular #typescript #enums #angular6
#angular #машинопись #перечисления #angular6
Вопрос:
У меня есть этот класс
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 = resu<
this.Events.forEach(element => {
console.log(element.EvalMethodEnum);
});
}
});
Свойство ‘Events’ содержит список объектов InstructorEvent…
Но он возвращает ‘undefined’, есть идеи, что я делаю не так?
Ответ №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]);
});