详解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 相关文章推荐
jQuery 扩展对input的一些操作方法
Oct 30 Javascript
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
js中各浏览器中鼠标按键值的差异
Apr 07 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
javascript数组输出的两种方式
Jan 13 Javascript
js数组依据下标删除元素
Apr 14 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
Aug 25 Javascript
JS填写银行卡号每隔4位数字加一个空格
Dec 19 Javascript
微信小程序 MD5的方法详解及实例代码
Mar 10 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
vue实现路由监听和参数监听
Oct 29 Javascript
如何检测JavaScript中的死循环示例详解
Aug 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
python实现处理mysql结果输出方式
2020/04/09 Python
python同时遍历两个list用法说明
2020/05/02 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
大学生物业管理求职信
2013/10/24 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
自立自强的名人事例
2014/02/10 职场文书
保密协议书范本
2014/04/22 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
道歉信范文
2015/05/12 职场文书
货款欠条范本
2015/07/03 职场文书
九年级语文教学反思
2016/03/03 职场文书
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技