我尝试使用装饰器将一些方法或属性添加到带注释的类中。
这是我的装饰者:
export default function Component(params) {
return function decorator(target) {
target.template = params.template;
console.log(target, params.template);
}
}
我用这种方式:
@Component({
template: template
})
export default class App {}
但是当我使用这个课时:
app.template // undefined;
有什么想法吗?
答案 0 :(得分:2)
您正在修改类对象本身,即
App.template // your template is here
在这种情况下你刚刚为App类定义了一个静态属性。
要为类实例设置模板,您应该使用:
target.prototype.template = params.template;
(很好的例子,类实际上只是构造函数和基于原型的继承的语法糖。)
另外,我认为this article关于组合mixins和decorator可能会有所帮助。