将参数传递给类装饰器

时间:2018-03-15 22:18:02

标签: angular typescript decorator

我正在尝试使用TypeScript Decorator将具有动态值的属性添加到类中。 我使用TS文档中的以下代码:

function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) {
    return class extends constructor {
        newProperty = "new property";
        hello = "override";
    }
}

这是有效的,但这些属性的价值不是动态的。我们可以将参数传递给此函数吗?像那样:

@classDecorator('myArgument')

之后我想在html文件中使用myArgument

1 个答案:

答案 0 :(得分:2)

Decorator是表达式,返回函数。表达式可以是函数名称本身(我们使用它像@classDecorator),并且可以调用另一个函数,它返回装饰器函数(然后我们像@classDecorator('myArgument')一样使用它)。第二种方法如下:

function classDecorator<T extends {new(...args:any[]):{}}>(myArgument:
 string) {
    return (constructor:T) => {
        return class extends constructor {
            newProperty = "new property";
            hello = "override";
        }
    }
}