四:Angular 元数据 (Metadata)

时间:2020-12-15 03:43:18

元数据告诉 Angular 如何处理一个类。

@Component({
   selector:    'hero-list',
   templateUrl: './hero-list.component.html',
   providers:  [ HeroService ]
})
export class HeroListComponent implements OnInit {
  /* . . . */
}

@Component装饰器能接受一个配置对象, Angular 会基于这些信息创建和展示组件及其视图。

@Component的配置项包括:

selector: CSS 选择器,它告诉 Angular 在父级 HTML 中查找 hero-list 标签,创建并插入该组件。

     例如,如果应用的 HTML 包含hero-list, Angular 就会把HeroListComponent的一个实例插入到这个标签中。 
templateUrl:组件 HTML 模板的模块相对地址,如前所示。 
providers - 组件所需服务的依赖注入提供商数组。 这是在告诉 Angular:该组件的构造函数需要一个HeroService服务,这样组件就可以从服务中获得英雄数据。 
元数据 
@Component里面的元数据会告诉 Angular 从哪里获取你为组件指定的主要的构建块。

模板、元数据和组件共同描绘出这个视图。

其它元数据装饰器用类似的方式来指导 Angular 的行为。 例如@Injectable、@Input和@Output等是一些最常用的装饰器。

这种架构处理方式是:你向代码中添加元数据,以便 Angular 知道该怎么做。

angular 组件元数据一览 

名称 类型 作用
selector string 自定义组件的标签,用于匹配元素。
inputs string[] 指定组件的输入属性。
outputs string[] 指定组件的输出属性
host {[key:string],string} 指定指令或组件的事件,动作和属性等
providers any[] 指定该组件及其所有子组件(含ContentChildren)可用的服务依赖注入
exportAs string 给指令分配一个变量,使其可以在模板中使用
moduleId string 包含该组件模块的id,他被用于解析模板和样式的相对路径
queries {[key:string],any} 设置需要被注入到组件的查询
viewProviders any[] 指定该组件及其所有子组件可用的服务
changeDetection ChangeDetectionStrategy 指定使用的变化监测策略
templateUrl string 模板路径
styleUrls string[] 样式路径
template string 内联模板
styles string[] 内联样式
animations AnimationEntryMetadata[] angular动画
encapsulation ViewEncapsulation 设置组件的试图包装选项
interpolation [string,string] 设置自定义插值标记,默认是{{}}