Angular2 组件间通过@Input @Output通讯示例


Posted in Javascript onAugust 24, 2017

本文介绍了Angular2 组件间通过@Input @Output通讯示例,分享给大家,具体如下:

父组件传给子组件:

子组件设置@Input属性,父组件即可通过设置html属性给子组件传值。

子组件:

@Input() title:string;
 _name:string = '';

 @Input() set name(name:string) {
  this._name=(name&&name.trim())||'';
 }

上面的代码设置了两个可供父组件传入的属性:title和name,当设置name属性时,set name(name:string)方法会执行,如果不需要处理setter,那么用title的形式,一行代码声明即可.

父组件调用:

<app-header [title]="title" name="姓名"></app-header>

调用方法有两种,属性名用中括号包围的title,值title是父组件中的对象名,而name没有用中括号,后面的值就是传给子组件的字符串。当然,不用中括号,也可以用{{name}}传对象的值。

如果要监听传入属性值的变化,可以在子组件实现OnChanges(@angular/core中)接口:

export class HeaderComponent implements OnChanges {
 ngOnChanges(changes: SimpleChanges): void {
  console.log(changes['title']);
 }
 @Input() title:string;
 _name:string = '';

 @Input() set name(name:string) {
  this._name=(name&&name.trim())||'';
 }

}

SimpleChanges 是一个用属性名作key的数组,通过属性名取出对象,对象里包含该属性变化前(previousValue)后(currentValue)的值。

父组件监听子组件变化

子组件通过@Output()暴露EventEmitter,父组件在声明子组件时增加EventEmitter的回调方法,子组件在需要的时候弹射事件,父组件的回调方法里就能收到。

子组件:

export class HeaderComponent implements OnChanges {
 ngOnChanges(changes: SimpleChanges): void {
  console.log(changes['title']);
 }
 @Input() title:string;
 _name:string = '';

 @Input() set name(name:string) {
  this._name=(name&&name.trim())||'';
 }
 //声明事件发射器
 @Output() checkEmitter=new EventEmitter<boolean>();
 //用于绑定checkbox的checked属性
 isChecked=true;

 toggle() {
  this.isChecked=!this.isChecked;
  //发射事件
  this.checkEmitter.emit(this.isChecked);
 }
}

子组件模板:

<p>
 {{title}}
</p>
<p><input type="checkbox" name="cb" [(ngModel)]="isChecked" (click)="toggle()" />Checkbox <br /></p>

父组件中声明:

<app-header [title]="title" name="{{name}}" (checkEmitter)="onCheckedChange($event)" ></app-header>

父组件事件回调接收:

export class AppComponent implements AfterViewInit{
 ngAfterViewInit() {

 }
 onCheckedChange(isChecked:boolean) {
  console.log("checkbox选中状态:"+isChecked);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
jQuery中addClass()方法用法实例
Jan 05 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
javascript实现在指定元素中垂直水平居中
Sep 13 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
jquery Ajax 全局调用封装实例详解
Jan 16 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
Dec 15 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 Javascript
vue 全局封装loading加载教程(全局监听)
Nov 05 Javascript
JS实现简易日历效果
Jan 25 Javascript
Angular2 组件交互实例详解
Aug 24 #Javascript
使用jQuery实现页面定时弹出广告效果
Aug 24 #jQuery
探究react-native 源码的图片缓存问题
Aug 24 #Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 #Javascript
10个最优秀的Node.js MVC框架
Aug 24 #Javascript
Vue.js实现输入框绑定的实例代码
Aug 24 #Javascript
Vue.js实现价格计算器功能
Mar 30 #Javascript
You might like
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
Vue infinite update loop的问题解决
2019/04/23 Javascript
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
HTML5标签小集
2011/08/02 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
外贸业务员求职自荐信分享
2013/09/21 职场文书
语文教学随笔感言
2014/02/18 职场文书
李培根演讲稿
2014/05/22 职场文书
企业形象策划方案
2014/05/29 职场文书
单位工作证明
2014/10/07 职场文书
中学生思想品德评语
2014/12/31 职场文书
矛盾论读书笔记
2015/06/29 职场文书
python pygame 开发五子棋双人对弈
2022/05/02 Python
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL