详解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的面向对象(一)
Nov 09 Javascript
javascript 密码强弱度检测万能插件
Feb 25 Javascript
jquery ajax执行后台方法
Mar 18 Javascript
jQuery JSON的解析方式分享
Apr 05 Javascript
Webkit的跨域安全问题说明
Sep 13 Javascript
javascript 小数取整简单实现方式
May 30 Javascript
js+csss实现的一个带复选框的下拉框
Sep 29 Javascript
代码详解JS操作剪贴板
Feb 11 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
Aug 07 Javascript
layui监听工具栏的实例(操作列表按钮)
Sep 10 Javascript
纯js实现无缝滚动功能代码实例
Feb 21 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 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
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
最简单的js图片切换效果实现代码
2011/09/24 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
JSONP跨域请求
2017/03/02 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
详谈python在windows中的文件路径问题
2018/04/28 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
事业单位接收函
2014/01/10 职场文书
面试后感谢信
2014/02/01 职场文书
英语求职信范文
2014/05/23 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
2016国庆促销广告语
2016/01/28 职场文书
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python
python基础之类属性和实例属性
2021/10/24 Python