2017-06-16 112 views
1

我嘗試使用裝飾器添加一些方法或屬性到註釋類。添加類裝飾器的類屬性

這是我的裝飾:

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; 

任何想法?

+1

裝飾者是*建議*(即實驗)。它們不是ES6或任何其他版本的語言的一部分。 –

+1

是的,我不是。這是一個拼寫錯誤。但你不幫我:) – Scandinave

+1

*「但你不幫我」*好吧,現在你可以在討論裝飾者時使用正確的上下文,而其他人會知道你的意思:) –

回答

2

您正在修改類對象本身,即

App.template // your template is here 

,你只是在這種情況下定義的App類的靜態屬性。

爲了設置類實例的模板,你應該使用:

target.prototype.template = params.template; 

(很好的例子類實際上是在構造函數和基於原型的繼承只是語法糖)。

此外,我認爲this article關於組合mixins和裝飾器可能會有所幫助。

+0

我不知道爲什麼我以前沒有想過這個。感謝這是解決方案。我已經閱讀過這篇文章。但我不明白我可以如何將參數傳遞給mixin? – Scandinave