详解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:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
Mar 12 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
Javascript中常用的检测方法小结
Oct 08 Javascript
js 中获取制定的cook信息实现方法
Nov 19 Javascript
js实现数组去重方法及效率?Ρ? target=
Feb 14 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
Sep 19 Javascript
使用ajax的post同步执行(实现方法)
Dec 21 Javascript
详解Vue 多级组件透传新方法provide/inject
May 09 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 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
文件上传程序的全部源码
2006/10/09 PHP
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
php截取中文字符串函数实例
2015/02/23 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
详细分析单线程JS执行问题
2017/11/22 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
js判断密码强度的方法
2020/03/18 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
公司薪酬管理制度
2014/01/31 职场文书
党的群众路线学习材料
2014/05/16 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技