当前,我正在从后端获取一组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
}
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控制器)发送除对象数组之外的其他内容吗?
是否可以通过api调用立即生成枚举?
还是有一种方法可以将对象数组转换为枚举?
答案 0 :(得分:0)
由于Eliseo的建议,这就是我最终要做的事情:
我将UserRoles检索为数组,然后对该数组进行了foreach循环,并将角色和ID添加到对象。
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>