1、@Input:可设置属性

     当它通过属性绑定的形式被绑定时,值会“流入”这个属性。

     在子组件中使用,例如:@Input()name:string

     父组件定义宾亮,并在父组件的模板中绑定,例如:

      子组件模板中:{{name}}

      子组件控制器中:@Input()name:string

      父组件控制器中:username = "Lion"

      父组件模板中:[name] = "username" (在调用的子组件的选择器中绑定)

     此时,数据即从父组件传入子组件,子组件能在本身的模板中使用改“name”变量

2、@Output:可观察对象型属性

     几乎总是返回Angular 的EventEmitter,当它通过事件绑定的形式被绑定时,值会“流出”这个属性

     在子组件中使用。例如:@Output() arriveMessage = new EventEmitter()

     子组件模板中绑定一个事件,例如按钮的点击事件(click()),在子组件控制器中定义一个被绑定到按钮点击事件的事件(message()),并在该事件中做出处理,即emit(弹射)例中的arriveMessage,在父组件的模板中绑定arriveMessage,绑定位置为子组件的选择器位置,最后 在父组件的控制器中进行事件处理(footerArriveMessage())

     例如:

     子组件模板:(click) = "message()"

     子组件控制器:@Output() arriveMessage = new EventEmitter()

            message(){

              ..............

              this.arriveMessage.emit();

            }

     父组件模板:(arriveMessage) = "footerArriveMessage()"

     父组件控制器中:footerArriveMessage(){

              进行处理

            }

3、子组件与子组件之间通过中间人模式实现通讯(需要有一个共同的父组件)

4、子组件与子组件之间通过服务来实现组件之间的通讯(没有共同父组件)

5、父组件与子组件通过本地变量互动

     在父组件的模板中使用,即在爱组件的选择器中声明一个本地变量(#变量名)例如:#name,该变量名即可代表子组件,之后可在父组件模板中调用子组件的属性和方法

     例如:

      (click) = "name.属性" 或 (click) = "name.方法"

     缺陷:

        父子组建的连接必须全部在父组件的模板中进行,在父组件的控制器中无法访问子组件的属性和方法

6、父组件调用@ViewChild()

总结:

  @Input:在子组件中使用。数据从父组件传递到子组件

  @Output:在子组件中使用。子组件的元素事件(例如:点击事件)的处理函数发射出父组件的自定义事件,触发自定义事件,父组件执行函数处理该自定义事件。

  局部变量实现数据交互:在父组件中使用。父组件在局部模板中自定义一个局部变量,形如#····。通过局部变量访问子组件的公共变量和方法。局限是只能在局部模板中使用,不能在父组件的类中对子组件的相关变量和方法进行修改。

  @ViewChild:在父组件中使用。通过此方法实现的数据交互,可以对子组件的相关变量和方法进行修改。

     

Angular学习笔记之组件之间的交互的更多相关文章

  1. Angular 学习笔记——自定义指令之间的交互

    <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...

  2. Angular 学习笔记 (动态组件 & Material Overlay & Dialog 分析)

    更新: 2019-11-24  dialog vs router link refer : https://stackoverflow.com/questions/51821766/angular-m ...

  3. angular学习笔记 父子组件传值

    一.如何将父组件的值传到子组件? 在子组件里面引入Input,然后用@Input 变量1 接收 接着在父组件中的,子组件标签上添加[msg]="msg",中括号里的名字要与子组件中 ...

  4. angular学习笔记(三十)-指令(5)-link

    这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...

  5. angular学习笔记(三十一)-$location(2)

    之前已经介绍了$location服务的基本用法:angular学习笔记(三十一)-$location(1). 这篇是上一篇的进阶,介绍$location的配置,兼容各版本浏览器,等. *注意,这里介绍 ...

  6. angular学习笔记(三十一)-$location(1)

    本篇介绍angular中的$location服务的基本用法,下一篇介绍它的复杂的用法. $location服务的主要作用是用于获取当前url以及改变当前的url,并且存入历史记录. 一. 获取url的 ...

  7. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

  8. angular学习笔记(三十)-指令(7)-compile和link(2)

    继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...

  9. angular学习笔记(三十)-指令(7)-compile和link(1)

    这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...

随机推荐

  1. 左右选择框 js插件

    随着项目的进展,测试工程师在更多的浏览器中兼容性测试中,发现有些浏览器不支持option的触发事件,这就造成了先前一篇博文bootstrap 左右框多项选择示例 中左右选择框的失效,于是我就由原先的s ...

  2. Codechef Union on Tree

    Codechef Union on Tree https://www.codechef.com/problems/BTREE 简要题意: 给你一棵树,\(Q\)次询问,每次给出一个点集和每个点的\(r ...

  3. 2017.10.2北京清北综合强化班DAY2

    a[问题描述]你是能看到第一题的 friends呢.                                                —— hja世界上没有什么比卖的这 贵弹丸三还令人绝 ...

  4. MySQL复制--最快的从库搭建方法(tar包) -转

    最快的从库搭建方法0,准备从库第一次数据备份,临时锁所有表开启窗口1 mysql> flush tables with read lock; Query OK, 0 rows affected  ...

  5. 机器学习:Jupyter Notebook中numpy的使用

    一.Jupyter Notebook的魔法命令 # 模块/方法 + ?或者help(模块/方法):查看模块/方法的解释文档: 1)%run # 机械学习中主要应用两个魔法命令:%run.%timeit ...

  6. Python:format()方法

    转于:https://blog.csdn.net/zhang89xiao/article/details/53818906 博主:张肖的博客 描述: format的格式 replacement_fie ...

  7. 问题:webservice浏览后 无法输入参数;结果:调试Web Service时不能输入参数的解决办法

    使用.NET 开发Web Service,有一个很方便的功能就是可以通过IE直接测试Web Service.当你的Web Service的参数都是元数据类型,那么只要你使用IE浏览Web Servic ...

  8. Tiny4412学习杂记

    1.Android 挂载NFS 使用 busybox mount 来替代mount命令 2.修改Uboot中fastboot最大buff  使用U-boot烧写Android5.0的时候出现 remo ...

  9. Packet for query is too large

    数据库:mysql5.6 framework: play framework 1.2.4 近日处理批量数据的insert,update,涉及的保存更新sql大概有18w.我的操作如下: 1)每次取10 ...

  10. java poi导出Excel 总结

    首先下载 Apache 的POI jar包 将更目录下的poi-3.8-20120326.jar 和lib下的三个jar包导入 如下图: 首先必须搞一个通用的工具类,网上找的,能用就行,java就是这 ...