主要通讯形式

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

组件的输入输出属性

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

输入属性

@Input()
private keyword: string;

输出属性

@Output()
searchResult: EventEmmiter<any> = 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

ngAfterViewChecked ngDoCheck

ngAfterContentChecked

ngAfterViewChecked
...
ngDestory

angular的变化发现机制

default策略

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

onpush策略

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

angular4 组件通讯、生命周期的更多相关文章

  1. 【React】学习笔记(二)——组件的生命周期、React脚手架使用

    原教程视频:ttps://www.bilibili.com/video/BV1wy4y1D7JT?p=2&spm_id_from=pageDriver 目录 一.组件的生命周期 1.1.生命周 ...

  2. ReactJS入门(二)—— 组件的生命周期

    如果你熟悉avalon,使用过 data-include-rendered 和 data-include-loaded 等回调方法,那么你会很好地理解React组件的各个生命周期. 说白了其实就是Re ...

  3. React Native 中组件的生命周期

    概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle).所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命 ...

  4. 《微信小程序七日谈》- 第三天:玩转Page组件的生命周期

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 前两篇 ...

  5. reactjs入门到实战(七)---- React的组件的生命周期

    React的组件的生命周期有三个状态分别是:挂载(生产组件示例化.准备挂载到页面.挂载到页面).更新(更新值.更新DOM).和卸载(卸载后). >>>其他     getInitia ...

  6. react.js 从零开始(二)组件的生命周期

    什么是生命周期? 组件本质上是一个状态机,输入确定,输出一定确定. 当状态改变的时候 会触发不同的钩子函数,可以让开发者做出响应.. 一个组件的生命周期可以概括为 初始化:状态下 可以自定义的函数 g ...

  7. Flex组件的生命周期

    组件实例化生命周期描述了用组件类创建组件对象时所发生的一系列步骤,作为生命周期的一部分,flex自动调用组件的的方法,发出事件,并使组件可见. 下面例子用as创建一个btn控件,并将其加入容器中 va ...

  8. react 组件的生命周期

    组件的生命周期 过程 装载(Mounting) :组件被插入到 DOM 中: 更新(Updating) :组件重新渲染以更新 DOM: 卸载(Unmounting) :组件从 DOM 中移除. 过程 ...

  9. ReactJS入门3:组件的生命周期

    本文主要介绍组件的生命周期. 组建的生命周期主要分为3个:Mounting.Updating.Unmounting. 1. Mounting:组件被加载到DOM     在本阶段,主要有三个方法: 1 ...

  10. vue的组件和生命周期

    Vue里组件的通信 通信:传参.控制.数据共享(A操控B做一个事件) 模式:父子组件间.非父子组件 父组件可以将一条数据传递给子组件,这条数据可以是动态的,父组件的数据更改的时候,子组件接收的也会变化 ...

随机推荐

  1. 区分Web Server和应用服务器

    一般的信息服务系统架构如下图所示: Web Server:提供Web信息浏览服务,主要处理的静态资源(session,request,js,html,cs等),如响应http请求,响应请求返回静态ht ...

  2. Random.nextInt()替换Math.random()

    在项目中使用哪个随机数 文章参考 http://liukai.iteye.com/blog/433718 今天用了find bugs后查出来了个问题 Google了下 发现 Random.nextin ...

  3. 乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

    首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁.传统的关系型数据库里边就用到了很 ...

  4. Ubuntu下更改Python版本

    https://www.jianshu.com/p/9d3033d1b26f 有些命令运行失败,是因为权限不够,前面加上 sudo 首先查看Python默认版本: ubuntu@user~$:pyth ...

  5. Python将数据渲染到docx文档指定位置

    超简单Python将指定数据插入到docx模板渲染并生成 最近有一个需求,制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大,因此可以使用python高效解决.为了 ...

  6. PAT A1110 Complete Binary Tree (25 分)——完全二叉树,字符串转数字

    Given a tree, you are supposed to tell if it is a complete binary tree. Input Specification: Each in ...

  7. centos7搭建logstash

    前两节已经成功完成ek的搭建,还剩最后的一个日志上传的功能 依次执行如下命令 cd /home/elk wget https://artifacts.elastic.co/downloads/logs ...

  8. 【Codeforces 696D】Legen...

    Codeforces 696 D 题意:给\(n\)个串,每个串有一个权值\(a_i\),现在要构造一个长度为\(l\leq 10^{14}\)的串,如果其中包含了第\(i\)个串,则会得到\(a_i ...

  9. TCP/IP协议---IP协议

    IP协议层 在传输层的下边,链路层的上边. IP层封装后称为数据报(传输层叫数据段,链路层叫数据帧.值得注意的是,不是所有的以太网数据帧都是IP数据报,至少以太网还要使用ARP协议.不是所有的IP数据 ...

  10. Hive 实现 wordcount

    创建表: create table hive_wordcount(context string); load data local inpath '/home/hadoop/files/hellowo ...