博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular4学习记录 -- 组件通讯、生命周期
阅读量:6998 次
发布时间:2019-06-27

本文共 1344 字,大约阅读时间需要 4 分钟。

angular4 组件通讯、生命周期

主要通讯形式

  1. 父组件通过属性绑定到子组件,子组件通过事件传递参数到父组件
  2. 父组件通过局部变量获取子组件的引用
  3. 父组件使用@ViewChild获取子组件的引用
  4. 两个不相关联的组件使用中间人模式交互
  5. 终极大招:创建一个服务注入到组件中
  6. 直接把父组件当做服务注入到子组件中

组件的输入输出属性

输入输出属性必须是在有父子关系的组件间使用

输入属性

@Input() private keyword: string;

输出属性

@Output()searchResult: EventEmmiter
= new EventEmmiter();

使用中间人模式传递数据

组件生命周期以及angular的变化发现机制

生命周期

  • constructor

    构造函数。
  • ngOnchanges

    绑定属性发生变化的时候调用,第一次调用一定在ngOnInit之前。
  • ngOninit

    第一轮ngChanges之后调用,本钩子只调用一次。
  • ngDoCheck

    在ngOnInit和ngDoCheck之后,会一直检查。
  • ngAfterContentInit

    当内容投影进组件之后调用。第一次ngDoCheck之后调用,只调用一次,只适用于组件。父组件调用完成之后,所有子组件才会调用。
  • ngAfterContentChecked

    每完成被投影组件内容发生变化时调用。ngAfterContentInit和ngDocheck之后调用,只适用于组件。父组件调用完成之后,所有子组件才会调用。
  • ngAfterViewInit

    初始化完成组件试图及其子视图之后调用。第一次ngAfterContentChecked之后调用,只调用一次,只适用于组件。所有子组件调用完成之后,父组件才会调用。此阶段更改属性的值会报错,可在settimeout后运行。
  • ngAfterViewChecked

    每次做完组件视图和子组件视图的变更检测之后调用。ngAfterViewInit和ngAfterContentChecked之后调用,只适用于组件。所有子组件调用完成之后,父组件才会调用。此阶段更改属性的值会报错,可在settimeout后运行。
  • ngDoDestory

    组件销毁时调用,主要用于内存回收。路由跳转时组件会销毁。

执行顺序:

constructor    ↓ngOnChanges    ↓  ngOnInit    ↓ngDoCheck    ↓ngAfterContentInit    ↓ngAfterContentChecked    ↓ngAfterViewInit    ↓ngAfterViewCheckedngDoCheck    ↓ngAfterContentChecked    ↓ngAfterViewChecked    ...ngDestory

angular的变化发现机制

default策略

无论变更发生在哪个组件上,zone.js都将会检查整个angular组件树,从根组件appComponent开始,直至所有组件全部检查完成。

onpush策略

onpush策略是当组件的输入属性发生变更时才会检查当前组件及其子组件

转载地址:http://xydvl.baihongyu.com/

你可能感兴趣的文章
Datazen自定义地图
查看>>
Calculate CRC32 as in STM32 hardware (EWARM v.5.50 and later)
查看>>
Android Sdk 国内镜像下载地址
查看>>
C#学习笔记(八):扩展方法
查看>>
【算法导论】多项式求和
查看>>
DELPHI关闭瑞星监控的源代码
查看>>
poj 2762 Going from u to v or from v to u? (推断它是否是一个薄弱环节图)
查看>>
web网站加速之CDN(Content Delivery Network)技术原理
查看>>
IndexReader已解决的问题
查看>>
servlet其工作原理和例子证明
查看>>
document.all使用
查看>>
BZOJ4044 : [Cerc2014] Virus synthesis
查看>>
c++读取文本文件
查看>>
动态链接库、静态链接库
查看>>
mysql日志问题定位实用命令
查看>>
【LeetCode】257. Binary Tree Paths
查看>>
CI在CentOS中的部署与实践LNMP
查看>>
解决LinearLayout中控件不能居右对齐
查看>>
串口传输文件 lrzsz
查看>>
MySQL SQL优化之in与range查询【转】
查看>>