Angular(二) - 组件Component
1. 组件Component示例
组件是由一个装饰器@Component
来声明的,继承自@Directive
import {Component} from '@angular/core';
@Component({
selector: 'app-root233', // 这个 CSS 选择器用于在模板中标记出该指令,并触发该指令的实例化
templateUrl: './app.component.html', // 指定html模板
styleUrls: ['./app.component.css'] // 指定css
})
export class AppComponent {
title = 'angularapp-2'; // 这里定义的title和enn可以在html中{{ title }}使用
enn = true
}
2. Component常用的几个选项
@Component
最常用的几个选项是:
- selector:这个 CSS 选择器用于在模板中标记出该指令,并触发该指令的实例化。
- template:组件的内联模板,为组件展示的内容,一般内容比较少时使用。如果提供了它,就不要再用 templateUrl 提供模板了
- templateUrl:组件模板文件的 URL。如果提供了它,就不要再用 template 来提供内联模板了。
- providers :使用一个 令牌 配置该指令或组件的 注入器,该令牌会映射到一个依赖项的提供商
- exportAs :一个或多个名字,可以用来在模板中把该指令赋值给一个变量。当有多个名字时,请使用逗号分隔它们
3. Component全部的选项
3.1 继承自@Directive装饰器的选项
选项 | 类型 | 说明 |
---|---|---|
selector | string | css选择器名,用于在模板中标记出该指令(组件),并触发其实例化 |
inputs | string[] | Angular 会在变更检测期间自动更新输入属性。 inputs 属性定义了一组从 directiveProperty 指向 bindingProperty 的配置项: · directiveProperty 用于指定要写入值的指令内属性。 · bindingProperty 用于指定要从中读取值的 DOM 属性。 当没有提供 bindingProperty 时,就假设它和 directiveProperty 一样。 例如: |
outputs | string[] | 一组可供事件绑定的输出属性。当输出属性发出事件时,就会调用模板中一个附加到该事件的处理器。 每个输出属性都会把 directiveProperty 映射到 bindingProperty: · directiveProperty 指定要发出事件的组件属性。 · bindingProperty 指定要附加事件处理器的 HTML 属性。 |
provides | Provider[] | 服务提供商的集合 |
exportAs | string | 一个或多个名字,可以用来在模板中把该指令赋值给一个变量。当有多个名字时,请使用逗号分隔它们。 |
queries | [{key:string]:any} | 配置将要注入到该指令中的一些查询。 内容查询会在调用 ngAfterContentInit 回调之前设置好。 试图查询会在调用 ngAfterViewInit 回调之前设置好。 |
jit | true | 如果为 true,则该指令/组件将会被 AOT 编译器忽略,因此永远只会被 JIT 编译。 这个选项是为了支持未来的 Ivy 编译器,目前还没有效果。 |
host | [{key:string]:string} | 使用一组键-值对,把类的属性映射到宿主元素的绑定(Property、Attribute 和事件)。 Angular 在变更检测期间会自动检查宿主 Property 绑定。 如果绑定的值发生了变化,Angular 就会更新该指令的宿主元素。 当 key 是宿主元素的 Property 时,这个 Property 值就会传播到指定的 DOM 属性。 当 key 是 DOM 中的静态 Attribute 时,这个 Attribute 值就会传播到宿主元素上指定的 Property 去。 对于事件处理: · 它的 key 就是该指令想要监听的 DOM 事件。 要想监听全局事件,请把要监听的目标添加到事件名的前面。 这个目标可以是 window、document 或 body。 · 它的 value 就是当该事件发生时要执行的语句。如果该语句返回 false,那么就会调用这个 DOM 事件的 preventDefault 函数。 这个语句中可以引用局部变量 $event 来获取事件数据。 |
3.2 @Component自己特有的选项
选项 | 类型 | 说明 |
---|---|---|
changeDetection | ChangeDetectionStrategy | 当组件实例化之后,Angular 就会创建一个变更检测器,它负责传播组件各个绑定值的变化。 该策略是下列值之一: · ChangeDetectionStrategy#OnPush(0) 把策略设置为 CheckOnce(按需)。 · ChangeDetectionStrategy#Default(1) 把策略设置为 CheckAlways。 |
viewProviders | Provider[] | 定义一组可注入对象,它们在视图的各个子节点中可用 |
moduleId | string | 包含该组件的那个模块的 ID。该组件必须能解析模板和样式表中使用的相对 URL。 SystemJS 在每个模块中都导出了 __moduleName 变量。在 CommonJS 中,它可以设置为module.id。 |
templateUrl | string | 组件模板文件的 URL。如果提供了它,就不要再用 template 来提供内联模板了。 |
template | string | 组件的内联模板。如果提供了它,就不要再用 templateUrl 提供模板了。 |
styleUrls | string[] | 一个或多个 URL,指向包含本组件 CSS 样式表的文件。 |
styles | string[] | 本组件用到的一个或多个内联 CSS 样式。 |
animations | any[] | 一个或多个动画 trigger() 调用,包含一些 state() 和 transition() 定义。 |
encapsulation | ViewEncapsulation | 供模板和 CSS 样式使用的样式封装策略。取值为: · ViewEncapsulation.Native:使用 Shadow DOM。它只在原生支持 Shadow DOM 的平台上才能工作。 · ViewEncapsulation.Emulated:使用垫片(shimmed) CSS 来模拟原生行为。 · ViewEncapsulation.None:使用全局 CSS,不做任何封装。 如果没有提供,该值就会从 CompilerOptions 中获取它。默认的编译器选项是 ViewEncapsulation.Emulated。 如果该策略设置为 ViewEncapsulation.Emulated,并且该组件没有指定 styles 或 styleUrls,就会自动切换到 ViewEncapsulation.None。 |
interpolation | [string, string] | 改写默认的插值表达式起止分界符({{ 和 }}) |
entryComponents | Array | 一个组件的集合,它应该和当前组件一起编译。对于这里列出的每个组件,Angular 都会创建一个 ComponentFactory 并保存进 ComponentFactoryResolver 中。 |
preserveWhitespaces | boolean | 为 true 则保留,为 false 则从编译后的模板中移除可能多余的空白字符。 空白字符就是指那些能在 JavaScript 正则表达式中匹配 \s 的字符。默认为 false,除非通过编译器选项改写了它。 |
4. 自定义component
angular提供了命令行可以生成组件,不用手动创建,下面是一个例子
# 在app/component文件夹下生成一个叫custom的组件
ng g component component/custom
生成出来的结果
Angular(二) - 组件Component的更多相关文章
- Salesforce Lightning开发学习(二)Component组件开发实践
lightning的组件区分标准组件.自定义组件和AppExchange组件.标准组件由SF提供,自定义组件由developer自行开发,AppExchange组件由合作伙伴建立.下面我们写一个简单的 ...
- vue从入门到进阶:组件Component详解(六)
一.什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功 ...
- angular学习—组件
组件: vue组件:xxx.vue react组件:xxx.js+xxx.css angular组件:xxx.ts+xxx.css+xxx.html angular的装饰器: @ngModule:an ...
- Angular 父子组件传值
Angular 父子组件传值 @Input @Output @ViewChild 新建一个头部组件 newsheader 在主组件引用 news 组件,在news组件添加 newsheader 组 ...
- Angular 动态组件
Angular 动态组件 实现步骤 Directive HostComponent 动态组件 AdService 配置AppModule 需要了解的概念 Directive 我们需要一个Directi ...
- Vue教程:组件Component详解(六)
一.什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功 ...
- react基础用法二(组件渲染)
react基础用法二(组件渲染) 如图所示组件可以是函数 格式:function 方法名(){ return <标签>内容</标签>} 渲染格式: <方法名 /> ...
- 【Angular】No component factory found for ×××.
报错现象: 用modal打开某个组件页面时报错 报错:No component factory found for UpdateAuthWindowComponent. Did you add it ...
- Exploring the Angular 1.5 .component() method
Angular 1.5 introduced the .component() helper method, which is much simpler than the.directive() de ...
随机推荐
- 前端面试 vue 部分 (3)——v-show和v-if的区别
v-if 适用于在运行时很少改变条件,不需要频繁切换条件的场景: v-show 则适用于需要非常频繁切换条件的场景. v-if 是条件渲染,如果在初始渲染时条件为假,则什么也不做--直到条件第一次变为 ...
- C#LeetCode刷题之#501-二叉搜索树中的众数(Find Mode in Binary Search Tree)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4086 访问. 给定一个有相同值的二叉搜索树(BST),找出 BS ...
- C#LeetCode刷题之#283-移动零(Move Zeroes)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3907 访问. 给定一个数组 nums,编写一个函数将所有 0 移 ...
- Linux内核之 基本概念
一直想写写Linux内核的文章,特别是进程这方面的,说实话,不好写,也不太敢写:)直到遇到了一本好书.<Linux内核设计与实现>,原书<Linux Kernel Developme ...
- CVT1100 错误的修复 2009-10-12 11:38
我们在用VS2005编译MFC工程时极少会出现如下错误: 一,CVTRES : fatal error CVT1100: 重复的资源.type:MANIFEST, name:1, language:0 ...
- 【算法•日更•第三十七期】A*寻路算法
▎写在前面 这是一种搜索算法,小编以前总是念成A乘寻路算法,没想到一直念错. 请大家都念成A星寻路算法,不要像小编一样丢人了. ▎A*寻路算法 ☞『引入』 相信大家都或多或少的玩过一些游戏吧,那么游戏 ...
- nohup 命令的使用
nohup 命令的使用 1. nohup简介 nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号.在注销后使用 nohup 命令运行后台中的 ...
- Url跳转漏洞常见
Url跳转漏洞常见出现点: 1.用户登录.统一身份认证处,认证完后会跳转. 2.用户分享.收藏内容过后,会跳转. 3.跨站点认证.授权后,会跳转. 4.站内点击其它网址链接时,会跳转. Url跳转漏洞 ...
- python基础 Day6
python Day6 id 可以获得python的内存地址 id的举例子 a=100 print(id(a)) #140712544153072 这里就是该对象的内存地址 is 判断的是比较内存地址 ...
- Robotium和Espresso大PK——速度篇
引言 Espresso和Robotium都是android UI自动化测试框架,且都是建立在Android Instrument的基础之上.对于测试人员来说,UI测试应该具备如下三个特点:1. 容易编 ...