angular2.0装饰器祥解

什么是装饰器?

装饰器是一个函数,它将元数据添加到类、类成员(属性、方法)和函数参数。
装饰器是一个 JavaScript 的语言特性,装饰器在 TypeScript 里已经实现,并被推荐到了ES2016(也就是ES7)。
要想应用装饰器,把它放到被装饰对象的上面或左边。
Angular 使用自己的一套装饰器来实现应用程序各部件之间的相互操作
@NgModule装饰器
NModule是一个装饰器函数,它接收一个用来描述模块属性的元数据对象。其中最重要的属性是:

declarations
声明本模块中拥有的视图类。 Angular 有三种视图类:组件指令管道
exports
declarations 的子集,可用于其它模块的组件模板
imports
本模块声明的组件模板需要的类所在的其它模块。
providers
服务的创建者,并加入到全局服务列表中,可用于应用任何部分。
bootstrap
指定应用的主视图(称为根组件),它是所有其它视图的宿主。只有根模块才能设置bootstrap
属性。

@Component组件装饰器

它把紧随其后的类标记成了组件类@Component装饰器能接受一个配置对象, Angular 会基于这些信息创建和展示组件及其视图。@Component的配置项包括:
moduleId: 为与模块相关的 URL(例如templateUrl)提供基地址。
selector: CSS 选择器,它告诉 Angular 在父级 HTML 中查找<hero-list>
标签,创建并插入该组件。 例如,如果应用的 HTML 包含<hero-list></hero-list>, Angular 就会把HeroListComponent
的一个实例插入到这个标签中。
templateUrl:组件 HTML 模板的模块相对地址,如前所示
providers 组件所需服务的依赖注入提供商数组。 这是在告诉 Angular:该组件的构造函数需要一个HeroService
服务,这样组件就可以从服务中获得英雄数据

@Component里面的元数据会告诉 Angular 从哪里获取你为组件指定的主要的构建块。模板、元数据和组件共同描绘出这个视图
@Component扩展了@Directive, 以便@Directive中的配置项也能用在组件上moduleId: module.id如果设置了,templateUrl和styleUrl会被解析成相对于组件的。

viewProviders: [MyService, { provide: ... }]

依赖注入provider的数组,局限于当前组件的视图中。

template: 'Hello {{name}}'templateUrl: 'my-component.html'

当前组件视图的内联模板或外部模板地址

styles: ['.primary {color: red}']styleUrls: ['my-component.css']

内联CSS样式或外部样式表URL的列表,用于给组件的视图添加样式。

****@Injectable装饰器

声明当前类有一些依赖,当依赖注入器创建该类的实例时,这些依赖应该被注入到构造函数中。

** @Pipe({...})装饰器** 声明当前类是一个管道,并且提供关于该管道的元数据

** @Directive装饰器**
声明当前类是一个指令,并提供关于该指令的元数据

** @Input() @Output() @HostBinding @HostListener @ContentChild装饰器**

@Input() myProperty;

声明一个输入属性,以便我们可以通过属性绑定更新它。(比如: <my-cmp [my-property]="someExpression">
).

@Output() myEvent = new EventEmitter();

声明一个输出属性,以便我们可以通过事件绑定进行订阅。(比如:<my-cmp (my-event)="doSomething()">
).

@HostBinding('[class.valid]') isValid;

把宿主元素的属性(比如CSS类:valid
)绑定到指令/组件的属性(比如:isValid
)。

@HostListener('click', ['$event']) onClick(e) {...}

通过指令/组件的方法(例如onClick
)订阅宿主元素的事件(例如click
),可选传入一个参数($event
)。

@ContentChild(myPredicate) myChildComponent;

把组件内容查询(myPredicate
)的第一个结果绑定到类的myChildComponent
属性。

@ContentChildren(myPredicate) myChildComponents;

把组件内容查询(myPredicate
)的全部结果,绑定到类的myChildComponents
属性。

@ViewChild(myPredicate) myChildComponent;

把组件视图查询(myPredicate
)的第一个结果绑定到类的myChildComponent
属性。对指令无效。

@ViewChildren(myPredicate) myChildComponents;

把组件视图查询(myPredicate
)的全部结果绑定到类的myChildComponents
属性。对指令无效

@SkipSelf装饰器
在注入器injector层级中的祖先injector中查找 CoreModule
,如果没有祖先injector则会提供一个CoreModule实例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容

  • 组件基础 组件用来包装特定的功能,应用程序的有序运行依赖于组件之间的协同工作。组件是angular应用的最小逻辑单...
    oWSQo阅读 1,368评论 0 0
  • 1.组件 组件负责控制屏幕上的一小块区域,我们称之为视图。例如,下列视图都是由组件控制的: 带有导航链接的应用根组...
    不去解释阅读 544评论 0 1
  • Angular 2架构总览 - 简书http://www.jianshu.com/p/aeb11061b82c A...
    葡萄喃喃呓语阅读 1,484评论 2 13
  • 一、起项目 根据官方教程,执行以下: 然后要把下面文件略微改一下(官方没有写),否则编译出的js和ts混在一起,很...
    Angeladaddy阅读 1,292评论 0 4
  • 人到了某个年龄才会慢慢知道“爱”这个字的分量,时间越久越不敢轻易说爱。不是不爱,也不是喜欢但是不爱,是我正在爱着你...
    ProfessorBennie阅读 198评论 0 0