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 相关文章推荐
js加解密 脚本解密
Feb 22 Javascript
JavaScript删除数组元素的方法
Mar 20 Javascript
JavaScript 数组- Array的方法总结(推荐)
Jul 21 Javascript
jQuery+Pdo编写login登陆界面
Aug 01 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
微信小程序 绘图之饼图实现
Oct 24 Javascript
简单易懂的天气插件(代码分享)
Feb 04 Javascript
vue2.0父子组件间通信的实现方法
Apr 19 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
vue3.0 CLI - 3.2 路由的初级使用教程
Sep 20 Javascript
vue实现拖拽效果
Dec 23 Javascript
测量JavaScript函数的性能各种方式对比
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
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
javascript Demo模态窗口
2009/12/06 Javascript
js 小数取整的函数
2010/05/10 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
python中count函数知识点浅析
2020/12/17 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
写给女朋友的道歉信
2014/01/08 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
幼儿园教师奖惩制度
2014/02/01 职场文书
学校读书活动总结
2014/06/30 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python
手残删除python之后的补救方法
2021/06/26 Python
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技