Vyhledávání na webu

angular - Angular2 - Jak používat řetězcové výčty (string enums) s *ngIf


Jak předám enum do funkce, když používám *ngIf v Angularu?

Mám následující kód:

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

funkce komponenty

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

komponenta html

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

Když to sestavuji, stále se to stěžuje. Nelze převést řetězec na výčet, existuje na to nějaký způsob?

Odpověď č. 1

Zde je mnohem čistší způsob, jak to udělat. Proveďte následující ve vašem souboru component.ts

allRoleTypes = RoleType;

a ve vašem HTML

*ngIf="role===allRoleTypes.User"

Nemusíte psát žádnou metodu.

Odpověď č. 2

Jak navrhl @Buczkowski, můžete to udělat takto:

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

součást

RoleType = RoleType; // This way you can access its properties from the template.

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

komponenta html

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

Příklad StackBlitz

Související články