装饰器是提供元数据,即描述数据的数据、对数据及信息资源的描述。
元数据(Metadata)是描述其它数据的数据(data about other data),或者说是用于提供某种资源的有关信息的结构数据(structured data)。元数据是描述信息资源或数据等对象的数据,其使用目的在于:识别资源;评价资源;追踪资源在使用过程中的变化;实现简单高效地管理大量网络化数据;实现信息资源的有效发现、查找、一体化组织和对使用资源的有效管理。(来自百度)
常用到的装饰器有:
@Component({...})
class MyComponent() {} :组件装饰器,声明一个类是组件,并提供提供有关组件的元数据,对属性进行描述。
@Directive({...})
class MyDirective() {} :声明一个类是一个指令,并提供有关该指令的元数据。
@Pipe({...})
class MyPipe() {} :声明是一个管道,并提供元数据。
@Injectable()
class MyService() {} :声明当依赖注入器创建此类的实例时,类具有应该注入到构造函数中的依赖关系。
@Input() myProperty; :声明可以通过属性绑定更新的输入属性(例如:<my-cmp [myProperty] =“someExpression”>)。
@Output() myEvent = new EventEmitter(); :声明一个使用事件绑定触发可以订阅的事件的输出属性(例如:<my-cmp(myEvent)=“doSomething()”>)。
(@input、@output 可用于具有父子关系的组件间通讯)
@HostBinding('class.valid') isValid; :将一个host元素属性(这里,CSS类有效)绑定到一个指令/组件属性(isValid)。
@HostListener('click', ['$event']) onClick(e) {...} :使用指令/组件方法(onClick)订阅主机元素事件(单击),可选地传递参数($ event)。
@ContentChild(myPredicate) myChildComponent; :将组件内容查询(myPredicate)的第一个结果绑定到该类的属性(myChildComponent)。
@ContentChildren(myPredicate) myChildComponents; : 将组件内容查询(myPredicate)的结果绑定到该类的属性(myChildComponents)。
@ViewChild(myPredicate) myChildComponent; : 将组件视图查询(myPredicate)的第一个结果绑定到该类的属性(myChildComponent)。 不适用于指令。
@ViewChildren(myPredicate) myChildComponents; :将组件视图查询(myPredicate)的结果绑定到该类的属性(myChildComponents)。 不适用于指令。
官方文档链接:点击打开链接