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 相关文章推荐
关于实现代码语法标亮 dp.SyntaxHighlighter
Feb 02 Javascript
Jquery 常用方法经典总结
Jan 28 Javascript
JS文本框默认值处理详解
Jul 10 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
Jun 12 Javascript
js以及jquery实现手风琴效果
Apr 17 Javascript
vue axios用法教程详解
Jul 23 Javascript
Javascript Promise用法详解
May 10 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
比较node.js和Deno
Apr 27 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
杏林同学录(九)
2006/10/09 PHP
用PHP函数解决SQL injection
2006/12/09 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
Python的装饰器用法学习笔记
2016/06/24 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
openCV提取图像中的矩形区域
2020/07/21 Python
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
仓库管理员岗位职责
2014/03/19 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
导游词之包公祠
2019/11/25 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis