Как преобразовать число в машинописный список в классе - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть этот класс

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);
    });
  }
});

Свойство «События» содержит список объектов InstructorEvent ...

Но он возвращает 'undefined', есть идеи, что я делаю не так?

1 Ответ

1 голос
/ 06 апреля 2019

Когда вы устанавливаете 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]);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...