Angular中的自定义装饰器以限制访问

时间:2018-11-25 10:39:27

标签: angular typescript

我该如何在Angular中使用自定义装饰器包装组件方法,以确保如果当前用户有权限执行该功能,则该函数应完成其工作?

public isAdmin = condition ? true: false;
    @Permission(isAdmin)
         createComponent() {
                this.stepContainer.clear();
                const stepContainerComponent: ComponentFactory<any> = this.resolver.resolveComponentFactory(StepContainerComponent);
                this.componentRef1 = this.stepContainer.createComponent(stepContainerComponent);
            }

据我了解,article的遍历与装饰器模式相同。但是,当我将任何装饰器应用于组件内部的任何方法时,即使我没有打开该特定组件,Angular也会调用该方法(但是我正在上载该组件所占用的应用程序的特定模块)。这是怎么运作的?

这是我尝试过的。如果我手动设置该值,则可以使用; @Permission(true)

export function Permission(value) {
 return function (target, key, descriptor) {
    if (value) {
        return descriptor;
    } else {
        descriptor.value = () => console.log('You dont have that permission');
        return descriptor;
    }
};

0 个答案:

没有答案