本篇博客为转载,看了原作者写的之后十分通透,就直接搬过来了,原地址: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. 什么是document对象?如何获取文档对象上的元素?_javascript自学记录:Document类型...
  2. tkinter 菜单添加事件_tkinter学习教程(七)
  3. mysql的分页查询
  4. The Best Vacation CodeForces - 1358D(贪心+尺取)
  5. Java对象转换方案分析与mapstruct实践
  6. classic example2
  7. 【Pre蓝桥杯嵌入式】【STM32】Unkown device
  8. (转)基于Metronic的Bootstrap开发框架经验总结(4)--Bootstrap图标的提取和利用...
  9. OSPF Sham-Link
  10. 图书管理系统源代码<Java>(带文字讲解)(javase)
  11. 基于经纬度的批量高程查询——python
  12. 数据库防火墙的性能和高可用性分析
  13. webscraper多页爬取_webscraper的常见爬取问题
  14. Woed渐变背景怎么设置?word渐变填充在哪里?
  15. 苹果系统无法购买服务器,itunes目前无法处理您的购买怎么解决
  16. hioki电阻测试仪3540软件,微电阻计/电阻测试仪/HIOKI 3540/HIOKI 3560/日置3540/日置3560...
  17. 实现JSON在线美化(格式化)、JSON转CSV、CSV转XML工具-toolfk程序员工具网
  18. 【基于MATLAB的火灾疏散模拟仿真】——安全隐患提前发现,疏散方案优化
  19. 彩票,双色球,模拟开奖小项目
  20. Ardupilot -- APM源码笔记四(重制)~ 线程机制

热门文章

  1. Python图像处理库PIL -- 学习资源
  2. C语言小知识点练习总结
  3. Solr7 安装部署 管理界面介绍
  4. 大数据助力智慧城市建设
  5. 如何设置windows下xampp的phpMyAdmin外网访问?
  6. Android listview与adapter用法
  7. 深入JUnit源码之Rule
  8. IOS学习之多线程(9)--NSOperation简单介绍
  9. 随机产生长度为20的字符串(数字和大小写字母)
  10. tcl中的string trim使用时需要注意substring是一个集合