1.Angular1
2.Angular 2特性
3.核心概念
组件是核心,其他都是组件的延伸
1.组件及组件树
A.组件都有完整的生命周期钩子,使我们清楚知道组件之间状态变化
Constructor 构造函数
做一些组建类的初始化工作,例如变量的初始赋值等等,接着会触发OnChanges钩子
不推荐处理和业务逻辑相关的工作
OnChanges
第一次触发,主要用来接收父组件传入的数据,为接下来的组件初始化提供数据支持,然后到了OnInit钩子
OnInit
这才是实际的组件初始化阶段,处理和业务逻辑相关的工作,接下来组件进入稳定期,OnChanges再次触发,只要从输入属性上获得的数据发生变化OnChanges钩子就会触发一次
组件销毁前会触发OnDestory钩子
OnDestory
在这个阶段做一些清理的工作,例如:事件解绑
B.组件示例
组件由两个大部分组成:上面的@Compoent和下面的 calss类
- 下面的class类就是组件类,组件的业务逻辑都在这个类里面编写
- 上面的@Compoent部分称为装饰器,装饰器里面有一些参数,它们就是angular八大核心里面的元数据,是TS提供的语法特性,用来修饰一个类相当于c++里的头文件
这里的template~~是一个内联模版,外联模版用templateUrl属性书,如:
templateUrl:"path/to/hello.html"
注意:一个组件只能选取一种方式指定模版
C.数据绑定
- 插值{{}}
可以直接使用组件类里面的成员变量 例如上面图片例子里的{{greeting}} - 属性绑定[value]
把组件类的属性传递到组件模版中
例如:<input [value]="myDate"/>
- 事件绑定(keyup)
把模版里产生的数据通过函数调用的方式传递到组建类,也负责组件间的数据通讯
例如<input (keyup)="handle($event)"/>
- 双向绑定[(ngModel)]
实现了数据的双向流动
例如<input [(ngModel)="myDate"] />
D.组件渲染
元数据里的selector 属性定义了一个hello,这是一个css3选择器,程序运行的时候他能匹配到html里的hello标签,当组件逻辑执行完以后,输出到视图,内容就会填充到<hello></hello>
标签里
E.组件树
这样Contact就成了ContactList的子组件,父组件要能使用子组件定义的一些元素标签,还需要一个导入的过程,这个导入的过程需要借助模块来实现,关于模块后面介绍
注意:子组件还定义了一个data变量,并且使用@Input()装饰器来修饰,这就是子组件的输入接口,用来接收来自父组件的数据