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>
これをビルドすると、文句を言い続けます。文字列を列挙型に変換できません。これを回避する方法はありますか?
文字列として取得し、RoleTypeに変換します。
public hasAccess(role: string): boolean {
const roleAsEnum: RoleType = RoleType[role];
return ...
}
列挙型が期待されるときに文字列を渡しているため、エラーが表示されます。他の人が示唆したように、それを処理するには複数の方法があり、そのうちの1つは次のとおりです。
private hasRole(role: string) {
console.log(role == RoleType.admin);
console.log(role == RoleType.user);
}