详解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 vvorld 在线加密破解方法
Nov 13 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
多种jQuery绑定事件的实现方式
Jun 13 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
微信小程序中做用户登录与登录态维护的实现详解
May 17 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
详解ES6中的三种异步解决方案
Jun 28 Javascript
vue通过数据过滤实现表格合并
Nov 30 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
Jul 20 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
物业管理毕业生个人的求职信
2013/11/30 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
财务管理专业求职信
2014/06/11 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
闪闪的红星观后感
2015/06/08 职场文书
职工宿舍管理制度
2015/08/05 职场文书
导游词之江西赣州
2019/10/15 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏