web-dev-qa-db-fra.com

Angular2 - Comment utiliser les énumérations de chaînes avec * ngIf

Comment passer enum à une fonction lorsque j'utilise *ngIf en angulaire?

J'ai le code suivant:

export enum RoleType {
    User='User',
    Admin='Admin'
}

fonction composante

public hasAccess(role: RoleType) {
   //check role type and return true or false
}

composant html

<div id="adminDiv" *ngIf="hasAccess('Admin')">
</div>

Quand je construis ça, ça continue de se plaindre. Il ne peut pas convertir la chaîne en énumération, y a-t-il un moyen de contourner cela?

6
Danny

Obtenez-le sous forme de chaîne, puis convertissez-le en RoleType.

public hasAccess(role: string): boolean {
const roleAsEnum: RoleType = RoleType[role];

return ...
}
1
Hypenate

L'erreur apparaît parce que vous passez String quand une énumération est attendue. Comme d'autres l'ont suggéré, il existe plusieurs façons de le gérer et l'une d'elles est:

  private hasRole(role: string) {
    console.log(role == RoleType.admin);
    console.log(role == RoleType.user);
  }
0
Shadab Faiz