详解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 相关文章推荐
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 Javascript
深入探密Javascript数组方法
Jan 08 Javascript
jquery ajax 如何向jsp提交表单数据
Aug 23 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
Jan 27 Javascript
js实现精确到秒的日期选择器完整实例
Apr 30 Javascript
JavaScript 自定义事件之我见
Sep 25 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
Dec 01 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
Aug 07 Javascript
快速解决vue-cli在ie9+中无效的问题
Sep 04 Javascript
vue实现div拖拽互换位置
Jul 29 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 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二分法查找数组是否包含某一元素
2013/05/23 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
php中的异常和错误浅析
2017/05/03 PHP
actionscript与javascript的区别
2011/05/25 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
javascript模拟命名空间
2015/04/17 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
python中map、any、all函数用法分析
2015/04/21 Python
介绍Python中的文档测试模块
2015/04/28 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python实现快速排序的方法详解
2019/10/25 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
优秀三好学生事迹材料
2014/08/31 职场文书
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL