详解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下4个跨浏览器必备的函数
Mar 07 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
JQuery筛选器全系列介绍
Aug 27 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
Apr 16 Javascript
深入浅出理解javaScript原型链
May 09 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
Apr 22 Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 Javascript
基于Vue SEO的四种方案(小结)
Jul 01 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
Aug 03 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 PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
用 JSON 处理缓存
2007/04/27 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
2017/02/08 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python实现的几个常用排序算法实例
2014/06/16 Python
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python聊天室实例程序分享
2016/01/05 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Django 实现下载文件功能的示例
2018/03/06 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
日常奢侈品,轻松购物:Verishop
2019/08/20 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
零件设计自荐信范文
2013/11/27 职场文书
会议接待欢迎词
2014/01/12 职场文书
运动会演讲稿200字
2014/08/25 职场文书
英语复习计划
2015/01/19 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书