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 相关文章推荐
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
Nov 18 Javascript
js取float型小数点后两位数的方法
Jan 18 Javascript
JavaScript计算某一天是星期几的方法
Aug 05 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
js上下视差滚动简单实现代码
Mar 07 Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 Javascript
React 使用browserHistory项目访问404问题解决
Jun 01 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
JavaScript面向对象继承原理与实现方法分析
Aug 09 Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
Sep 21 Javascript
vue使用axios实现excel文件下载的功能
Jul 16 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实现C#山寨ArrayList的方法
2015/07/16 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
深入理解Python3中的http.client模块
2017/03/29 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
django中send_mail功能实现详解
2018/02/06 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
审计主管岗位职责
2014/01/31 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
运动会班级前导词
2015/07/20 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
Vue如何实现组件间通信
2021/05/15 Vue.js