В настоящее время вы не создаете экземпляры своего класса, поэтому метод класса getRole()
недоступен. С this.http.get<Profile>
вы просто сообщаете компилятору, что то, что вы ожидаете от API, соответствует вашему классу, оно фактически не создает экземпляры вашего класса или подкласса User
.
Вам необходимо добавить конструкторк вашим классам со свойствами и фактически создайте экземпляров вашего класса. Вот упрощенный пример:
export class User {
role: string;
constructor(role: string) {
this.role = role;
}
getRole() {
switch (this.role) {
case 'READ': {
return "READ";
}
case 'WRITE': {
return "WRITE";
}
default: {
return "READ";
}
}
}
}
Затем необходимо создать экземпляр вашего класса, чтобы иметь доступ к методам класса:
ngOnInit() {
let user = new User('WRITE');
console.log(user.getRole());
}
STACKBLITZ
Кроме того, если бы это был единственный метод в вашем классе, который вам нужен, я бы просто предложил использовать вместо этого интерфейсы и написать автономную функцию, которая проверяет роль, вместо того, чтобы преодолевать трудности, связанные с созданием экземпляров. класса. Это очень самоуверенная вещь, поэтому, если вы хотите использовать классы и методы, специфичные для классов, вам нужно пойти по вышеуказанному пути. Мне просто нравится использовать интерфейсы лично:)