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 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
May 18 Javascript
Js 时间函数getYear()的使用问题探讨
Apr 01 Javascript
js原型链与继承解析(初体验)
May 09 Javascript
原生js的数组除重复简单实例
May 24 Javascript
jQuery双向列表选择器select版
Nov 01 Javascript
Vuex利用state保存新闻数据实例
Jun 28 Javascript
javaScript封装的各种写法
Aug 14 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
Aug 08 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
Dec 29 Javascript
vue微信分享插件使用方法详解
Feb 18 Javascript
vuex管理状态仓库使用详解
Jul 29 Javascript
原生js实现下拉框选择组件
Jan 20 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下实现农历日历的代码
2007/03/07 PHP
destoon二次开发入门示例
2014/06/20 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
python安装与使用redis的方法
2016/04/19 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
Python 如何批量更新已安装的库
2020/05/26 Python
python线程池如何使用
2020/05/28 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
python实现自动打卡的示例代码
2020/10/10 Python
python pymysql库的常用操作
2020/10/16 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
社区清明节活动总结
2014/07/04 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
PyMongo 查询数据的实现
2021/06/28 Python
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js
Nginx 匹配方式
2022/05/15 Servers