permission.directive.ts 674 Bytes
import {Directive, Inject, Input} from "ng-forward";

@Directive({
    selector: '[permission]'
})
@Inject('$attrs', '$scope', '$element')
export class PermissionDirective {

    constructor($attrs: ng.IAttributes, $scope: ng.IScope, $element: ng.IAugmentedJQuery) {
        $scope.$watch($attrs['permission'], () => {
            let permissions = $scope.$eval($attrs['permission']);
            let permissionAction = $attrs['permissionAction'];
            if (!permissions || permissions.indexOf(permissionAction) < 0) {
                $element.css("display", "none");
            } else {
                $element.css("display", "");
            }
        });
    }
}