Кто-нибудь пытался использовать typescript перечисления в HTML-страницах AngularJS?

В Typescript я создал перечисление следующим образом:

enum Action { None = 0, Registering = 1, Authenticating = 2 };

В моем контроллере я устанавливаю свойство, называемое action следующим образом:

class AuthService implements IAuthService {

    action: number;

    constructor(
        private $state,
        private userService,
        private utilityService: IUtilityService
        ) {

        this.action = Action.None;

    }

    doRegister() => {
       this.action = Action.Registering;
    }

Это работает хорошо, но как я могу использовать перечисление в своем HTML. Это возможно? Я хотел бы использовать его в таком месте:

<span ng-class="{'fa-spin fa-spinner': app.authService.authenticating }">

Без необходимости создавать разные переменные для:

app.authService.authenticating
app.authService.registering
...
etc

Ответ 1

Вы можете поместить это на $rootScope например.

mainmodule.run([
    '$rootScope'
], function ($rootScope){

    // put it on $rootScope
    $rootScope.Action = Action;
});

И так как каждый $scope наследует от него, он находится на каждой области, и вы можете просто сделать Action.foo и т.д.

Примечание. Для директив с областью выделения вам нужно сделать $root.Action.foo. Просто Action не будет работать, поскольку он намеренно нарушает цепочку прототипов.