машинопись перечисление из массива - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время я получаю массив объектов UserRole из серверной части. Каждая UserRole имеет Id (int) и Role (string).

UserRoles [] выглядит как ...
[
   //{id, role}
     {1, Viewer},
     {2, Owner},
     {3, Admin}
]
_models \ userRole.ts
export interface UserRole {
    id: number,
    role: string
}


home.component.ts
export class HomeComponent implements OnInit {
    ...
    userRoles: UserRole[]

    constructor(...) {
        http.get<UserRole[]>(baseurl + "api/UserRoles/GetUserRoles").subscribe(result => { 
            this.userRoles = result; 
            }, error => console.error(error));
    }

    ...
}


Вопрос:

Я бы хотел превратить это в перечисление для использования в ограничении того, что представлено пользователю. Например,

<div *ngIf="user.userRoleId >= userRoles.Owner ">

Должен ли я отправлять что-то кроме массива объектов из бэкэнда (который является контроллером ASP.NET Core)?

Есть ли способ генерировать enum сразу из вызова API?

Или есть способ преобразовать массив объектов в перечисление?

1 Ответ

0 голосов
/ 06 июля 2018

Благодаря предложению Элизео, вот что я в итоге сделал:

Я получил UserRoles в виде массива, затем сделал цикл foreach для этого массива и добавил роли и идентификатор к объекту.

home.component.ts
//imports

export class HomeComponent implements OnInit {
    ...
    user: User;
    userRoles: any = {};

    constructor(private userRoleService: UserRoleService, private alertify: AlertifyService) {}

    ngOnInit() {
        this.loadUserRoles();
    }

    loadUserRoles() {
        this.userRoleService.getUserRoles().subscribe((res: UserRole[]) => {
            res.forEach(p => this.userRoles[p.role] = p.id);
        });
    }
userRole.service.ts
//imports

@Injectable()
export class UserRoleService {
    baseUrl = environment.apiUrl;

    constructor(private authHttp: HttpClient) {}

    getUserRoles(): Observable<UserRole[]> {
        return this.authHttp
            .get<UserRole[]>(this.baseUrl + "UserRoles");
    }
}
home.component.html реализация
<div *ngIf="user.userRoleId >= userRoles.Owner ">
    ...
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...