详解Angular2中Input和Output用法及示例


Posted in Javascript onMay 21, 2017

对于angular2中的Input和Output可以和AngularJS中指令作类比。

Input相当于指令的值绑定,无论是单向的(@)还是双向的(=)。都是将父作用域的值“输入”到子作用域中,然后子作用域进行相关处理。

Output相当于指令的方法绑定,子作用域触发事件执行响应函数,而响应函数方法体则位于父作用域中,相当于将事件“输出到”父作用域中,在父作用域中处理。

看个angular2示例吧,我们定义一个子组件,获取父作用域的数组值并以列表形式显示,然后当点击子组件的元素时调用父组件的方法将该元素删除。

//app.component.html
<app-child [values]="data" (childEvent) = "getChildEvent($event)">
</app-child>

//app.component.ts
@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent {
 data = [1,2,3];

 getChildEvent(index){
  console.log(index);
  this.data.splice(index,1);
 }
}

以上是跟组件app-root的组件类及模板,可以我们把data输入到子组件app-child中,然后接收childEvent事件并对其进行响应。

//app-child.component.html
<p *ngFor="let item of values; let i = index" (click)="fireChildEvent(i)">
 {{item}}
</p>


//app-child.component.ts
@Component({
 selector: 'app-child',
 templateUrl: './child.component.html',
 styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
 @Input() values;
 @Output() childEvent = new EventEmitter<any>();
 constructor() { }

 ngOnInit() {

 }
 fireChildEvent(index){
  this.childEvent.emit(index);
 }
}

子组件定义了values接收了父组件的输入,这里就是data值,然后使用ngFor指令显示。

当点击每个元素的时候触发了click事件,执行fireChildEvent函数,该函数要将元素的index值“输出”到父组件中进行处理。

Output一般都是一个EventEmitter的实例,使用实例的emit方法将参数emit到父组件中,触发父组件的childEvent事件。

然后父组件监听到该事件的发生,执行对应的处理函数getChildEvent,删除传递的元素索引指向的数据,同时,视图更新。

实际效果:

详解Angular2中Input和Output用法及示例

源码地址:https://github.com/justforuse/angular2-demo/tree/master/angular-input-output

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript XMLHttpRequest对象全面剖析
Apr 24 Javascript
给文字加上着重号的JS代码
Nov 12 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
使用bootstrap3开发响应式网站
May 12 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
利用vue组件自定义v-model实现一个Tab组件方法示例
Dec 06 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
Sep 24 Javascript
微信小程序开发摇一摇功能
Nov 22 Javascript
JavaScript实现页面动态验证码的实现示例
Mar 23 Javascript
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 Javascript
Angular2中如何使用ngx-translate进行国际化
May 21 #Javascript
详解angularjs利用ui-route异步加载组件
May 21 #Javascript
如何在AngularJs中调用第三方插件库
May 21 #Javascript
详解Angular-Cli中引用第三方库
May 21 #Javascript
Angular2安装angular-cli
May 21 #Javascript
Angular2使用Augury来调试Angular2程序
May 21 #Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 #Javascript
You might like
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
单利模式及python实现方式详解
2018/03/20 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
python绘制雷达图实例讲解
2021/01/03 Python
外贸销售员求职的自我评价
2013/11/23 职场文书
业务部经理岗位职责
2014/01/04 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
MySQL 语句执行顺序举例解析
2022/06/05 MySQL