本篇博客为转载,看了原作者写的之后十分通透,就直接搬过来了,原地址:https://segmentfault.com/a/1190000007890167(侵删)十分感谢原作者

先说说如何区分子组件、父组件。比如说我有一个组件A,他的选择器是cmpA,然后B组件里的html文件里用到了cmpA,那么A组件就是子组件,B组件就是父组件。

做个比方,然后奉上代码
比如:

<talk-cmp [talk]="someExp" (rate)="eventHandler($event.rating)">

input, [talk]="someExp" 这个标签可以理解为一个专门的监听器,监听父组件传递过来的someExp参数,并存入自身组件的talk变量;好像是开了个后门,允许且只允许父组件的someExp进入,一旦进入立刻抓进一个叫talk的牢房,然后子组件中就可以通过@Input来定义这个变量talk然后使用它。

output ,(click)="eventHandler($event.rating) 这个意思是, 当子组件的click事件被触发,就执行父组件的eventHandler函数,并把子组件的参数$event.rating传递给父组件的eventHandler函数;就好像,当小孩子一哭(执行click事件),他的母亲立刻把他抱在怀里(执行母亲的eventHandler),同时母亲获得了小孩子的一些参数($event.rating),上面的[talk]就相当于母亲给孩子的礼物,但是孩子只能通过@input()去拿。

我的理解就是: input是子组件接受父组件传进来的参数,output是子组件通过触发事件向父组件传数据

1. @input()

父组件 father.component.ts 提供数据

import {Component} from "@angular/core";
@Component({selector: "my-father",templateUrl: "father.html"
})
export class FatherComponent {data: Array<Object>;constructor() {this.data = [{"id": 1,"name": "html"},{"id": 2,"name": "css"},{"id": 3,"name": "angular"},{"id": 4,"name": "ionic"},{"id": 5,"name": "node"}]}
}

模板文件 father.html

<h1>父组件</h1>
// 包含子组件, 并使用属性传递数据过去
<my-child [info]="data"></my-child>

子组件 child.component.ts 获取数据

import {Component, Input} from "@angular/core";
@Component({selector: "my-child",templateUrl: "child.html"
})
export class ChildComponent {   // 使用@Input获取传递过来的数据@Input()info: Array<Object>;constructor() {}
}

子组件 child.html模板文件

<ul><li *ngFor="let item of info">{{item.name}}</li>
</ul>

2、@Output()

子组件three-link.component.ts

1. 引入import {Component, OnInit, Output, EventEmitter} from "@angular/core";2. 定义输出变量export class ThreeLinkComponent {province: string;// 输出一下参数@Output() provinceOut = new EventEmitter();   constructor() {this.province = "陕西";}
}3. 事件出发,发射变量给父组件provinceChange() {// 选择省份的时候发射省份给父组件this.provinceOut.emit(this.province);
}

父组件模板

<!--三级联动组件-->
<three-link (provinceOut)="recPro($event)"></three-link>

父组件

// 函数接受子函数传递过来的变量, 子函数中emit的时候触发这个函数。
recPro(event) {this.province = event;
}

3.另外一个父组件中访问子组件中的方法

子组件CircleComponent中定义了 getColorRedFun(i)方法,父组件中想调用这个方法。
1、html中添加标记 #circleComponent
2、使用@ViewChild访问子组件
3、ngAfterViewInit()以后才可以访问到获取的子组件
4、就可以通过 this.circleComponent访问子组件中的属性和方法了。

html
<page-circle #circleComponent></page-circle>ts
export class HomePage {@ViewChild("circleComponent")circleComponent: CircleComponent;ngAfterViewInit() {console.log(this.circleComponent);this.circleComponent.getColorRedFun(4);}
}

Angular 2/Ionic 2 @input和@output理解相关推荐

  1. Angular应用里的@Input和@Output注解使用方法介绍

    这一对注解用于在parent上下文和子指令或者组件之间共享数据.@Input修饰的属性可写,用于数据绑定,而@Output属性可被订阅(Observable). @Input() and @Outpu ...

  2. Angular使用@Input和@Output实现父子组件互相传参(类似Vue的props和this.emit)

    app.component.html <app-in-out [in]='"传输进入"' (out)="out($event)" ></app ...

  3. angular input和output

    Angular中的输入输出是通过注解@Input和@Output来标识,它位于组件控制器的属性上方. 输入输出针对的对象是父子组件. @Input和@Output这两个要结合父组件与子组件来说 @In ...

  4. 【Angular】@Input和@Output

    该篇是上一篇的改编:[Angular]table假分页 [@Input和@Output] @Input和@Output这两个要结合父组件与子组件来说 @Input:是属相绑定,父组件向子组件传递数据 ...

  5. Java IO的原理 入门理解,input和output和java程序的关系

    Java IO的原理 入门理解,input和output和java程序的关系 1.Java IO的原理 2.input和output的理解 3.IO流的分类 4.IO流体系(蓝色为重点.常用) 5.. ...

  6. Angular4学习笔记(六)- Input和Output

    概述 Angular中的输入输出是通过注解@Input和@Output来标识,它位于组件控制器的属性上方. 输入输出针对的对象是父子组件. 演示 Input 新建项目connInComponents: ...

  7. 标准库 - 输入输出处理(input and output facilities) lua

    标准库 - 输入输出处理(input and output facilities) 责任编辑:cynthia作者:来自ITPUB论坛 2008-02-18 文本Tag: Lua [IT168 技术文档 ...

  8. 使用Angular,Ionic 4和Spring Boot构建移动应用

    朋友不允许朋友写用户身份验证. 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK. 在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 我是Ionic的忠实粉丝. 几年 ...

  9. system verilog中的参数传递——ref,input,output

    本文介绍了 system verilog 中静态数组.动态数组.队列作为函数参数传递的规则,以及 input.output.ref关键字的规则. system verilog中的参数传递--ref,i ...

最新文章

  1. 用C#实现的条形码和二维码编码解码器
  2. vb6调用python识别训练例子_在vb6中创建的“标准”dll在python中调用时会出现访问冲突...
  3. 鳗鱼劈断后下半身还能运动,机器人:拿来吧你丨Science子刊封面
  4. python3.3中print换行
  5. RosBE生成ReactOS的VS2015工程失败2
  6. 在operator =中要处理“自我赋值”
  7. TalkingData的Spark On Kubernetes实践
  8. mysql分页查询所有数据库_MySQL 数据库 分页查询/聚合查询
  9. CSDNmarkdown编辑器报错KaTeX parse error: \cr valid……
  10. redis能模糊删除key吗_redis 模糊匹配和批量删除
  11. 磁共振成像(MRI)影像心脏组织分割
  12. 潘多拉网吧防火墙 1.0 双线破解
  13. 数电模电基础(1)分压电路
  14. 苹果6更换电池注意事项
  15. python安装后不能画图_Python实现画图软件功能,windows的画图功能不能实现
  16. 养生怪杰:魏伟的养生之道
  17. Android性能优化系列之电量优化
  18. 【JAVA SE】java中的String类
  19. 说说我们都怎么面试程序员的
  20. 关联分析-问题定义(1)‍♀️

热门文章

  1. 解析几何:第三章 平面上的直线
  2. 编程之美-子数组之和的最大值(二维)方法整理
  3. 【深度学习】制作VOC2007数据集用于Faster-RCNN训练
  4. AJPFX学习笔记JavaAPI之String类
  5. Spark 与MapReduce 资源调度方面的简单对比
  6. Spring Boot 2.0(二):Spring Boot 2.0尝鲜-动态 Banner
  7. 二维绘图引擎:圆、半圆、弧线绘制
  8. Android游戏开发笔记(一)
  9. Android--面试题整理(二)
  10. 关键词多样性的重要意义