web-dev-qa-db-ja.com

Angular2-* ngIfで文字列列挙型を使用する方法

Angularで*ngIfを使用する場合、enumを関数に渡すにはどうすればよいですか?

私は次のコードを持っています:

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

コンポーネント関数

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

コンポーネントhtml

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

これをビルドすると、文句を言い続けます。文字列を列挙型に変換できません。これを回避する方法はありますか?

6
Danny

文字列として取得し、RoleTypeに変換します。

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

return ...
}
1
Hypenate

列挙型が期待されるときに文字列を渡しているため、エラーが表示されます。他の人が示唆したように、それを処理するには複数の方法があり、そのうちの1つは次のとおりです。

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