我正在使用typescript for angular 2應用程序開發。typecipt中@符號的含義--Angular 2
但是,當我們編寫組件或路由配置代碼或其他地方 我們使用「@」符號。
我的問題是這個符號是什麼意思,爲什麼它是必需的?
我正在使用typescript for angular 2應用程序開發。typecipt中@符號的含義--Angular 2
但是,當我們編寫組件或路由配置代碼或其他地方 我們使用「@」符號。
我的問題是這個符號是什麼意思,爲什麼它是必需的?
這意味着你正在申請一個裝飾器。
隨着TypeScript和ES6中類的引入,現在存在某些需要額外功能來支持註釋或修改類和類成員的場景。裝飾器提供了爲類聲明和成員添加批註和元編程語法的方法。修飾器是JavaScript的第1階段建議,可用作TypeScript的實驗性功能。
就拿這個帖子上關於註釋和裝飾一看,在那裏你會明白
http://blog.thoughtram.io/angular/2015/05/03/the-difference-between-annotations-and-decorators.html
的這兩個概念之間的差異@
符號你是r被稱爲decorator
。
裝飾器提供了爲類聲明和成員添加批註和元編程語法的方法。
基本上當你在做@component
你告訴編譯器該類是一個angular2組件,元數據作爲參數傳遞。
例如。
@Component({
moduleId: module.id,
selector: 'heroes-app',
templateUrl: 'heroes.component.html',
styleUrls: ['heroes.component.css'],
})
class HeroesComponent{}
該代碼將告訴編譯器該類HeroesComponent應該是一個angular2組件,其元數據作爲參數傳遞,它將創建一個組件類。
裝飾者不是魔術。這只是函數調用。
例如。
@Component({
selector: 'static-component',
template: `<p>Static Component</p>`
})
class StaticComponent {}
等同於:
class DynamicComponent {
}
const dynamicComponent = Component({
selector: 'dynamic-component',
template: `<p>Dynamic Component</p>`
})(DynamicComponent);
希望這有助於。
我已經閱讀了@Gunter提供的參考鏈接,發現它只是一些代碼,它在運行時被注入到實際代碼中......但爲了注入它,我們使用了前面帶有@符號的函數名,以便Typescript理解它是裝飾者,它應該在轉譯或以後的時候保持謹慎。 如果我錯了,PLZ糾正我。 –
聽起來正確。 –
修飾器可以靜態解釋(不需要實際運行代碼)Angular使用它在構建時生成代碼(離線模板編譯器)和模板中的自動完成等工具支持(都在進行中)。 –