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 调试器简介
Feb 21 Javascript
javascript实现checkbox全选的代码
Apr 30 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 Javascript
JS正则替换去空格的方法
Mar 24 Javascript
Vue 中使用 CSS Modules优雅方法
Apr 09 Javascript
node 命令方式启动修改端口的方法
May 12 Javascript
详解react-refetch的使用小例子
Feb 15 Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
VUE注册全局组件和局部组件过程解析
Oct 10 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 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数组最大值,最小值的代码
2011/10/31 PHP
php错误级别的设置方法
2013/06/17 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
Vue中封装input组件的实例详解
2017/10/17 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python装饰器简单用法实例小结
2018/12/03 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
用python实现刷点击率的示例代码
2019/02/21 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
一些Solaris面试题
2013/03/22 面试题
夫妻房产协议书的格式
2014/10/11 职场文书
销售经理工作检讨书
2015/02/19 职场文书
个人年终总结开头
2015/03/06 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
外科护士长工作总结
2015/08/12 职场文书
课题研究阶段性总结
2015/08/13 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python
Redis Lua脚本实现ip限流示例
2022/07/15 Redis