详解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 学习笔记(四)
Dec 31 Javascript
JQuery 选项卡效果(JS与HTML的分离)
Apr 01 Javascript
JQuery开发的数独游戏代码
Oct 29 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
Jan 11 Javascript
JS父页面与子页面相互传值方法
Mar 05 Javascript
js数组的基本操作(很全自己整理的)
Oct 16 Javascript
解析浏览器端的AJAX缓存机制
Jun 21 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
Apr 17 Javascript
vue mvvm数据响应实现
Nov 11 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/08/24 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
Three.js基础部分学习
2017/01/08 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
python中global用法实例分析
2015/04/30 Python
实时获取Python的print输出流方法
2019/01/07 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
薇姿法国官网:Vichy法国
2021/01/28 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
中文教师求职信
2014/02/22 职场文书
企业安全生产承诺书
2014/05/22 职场文书
中学生运动会口号
2014/06/07 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
领导干部作风建设总结
2014/10/23 职场文书
谢师宴答谢词
2015/01/05 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL