Angular自定义组件实现数据双向数据绑定的实例


Posted in Javascript onDecember 11, 2017

学过Angular的同学都知道,输入框通过[(ngModel)]实现双向数据绑定,那么自定义组件能不能实现双向数据绑定呢?答案是肯定的。

Angular中,我们常常需要通过方括号[]和圆括号()实现组件间的交互:

Angular自定义组件实现数据双向数据绑定的实例

那么在[]()的基础上,如何实现组件的双向数据绑定?

例子如下。

子组件:

<!--testDataBinding.component.html-->

<h1>childStatus: {{childStatus}}</h1>
//testDataBinding.component.ts

export class TestDataBindingComponent implements OnInit{
 @Input() childStatus;
 @Output() childStatusChange = new EventEmitter();
 ngOnInit(){
 setTimeout(()=>{
  this.childStatus = false;
  this.childStatusChange.emit(this.childStatus);
 },5000);
 }
}

注意这里的写法,这是关键所在,输出属性前半部分必须与输入属性相同,输入属性可以随意取名,输出属性需在输入属性基础上加上Change,比如你的输入属性是myData,那么输出属性就必须是myDataChange。

父组件:

<!--app.component.html-->

<test-binding [(childStatus)]="parentStatus"></test-binding>
<h1>parentStatus: {{parentStatus}}</h1>
//app.component.ts

import { Component,OnInit } from '@angular/core';
@Component({
 selector: 'my-app',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
 parentStatus: boolean = true;
 ngOnInit(){
 setTimeout(()=>{
  this.parentStatus = true;
 },10000);
 }
}

在父组件我们初始化parentStatustrue,并把它传到子组件TestDataBindingComponent

在子组件里,5秒后我们把childStatus设为false,看它能不能传到父组件。再过5秒,我们在父组件将parentStatus设为true,看它能不能传到子组件。

Angular自定义组件实现数据双向数据绑定的实例

事实证明,子组件值变化后,父组件的值也跟着变化;父组件值变化后子组件的值也跟着变了!

我们实现了双向绑定!

查看本文代码和效果,可点击这里

以上这篇Angular自定义组件实现数据双向数据绑定的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js Flash插入函数免激活代码
Mar 31 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
Angular组件化管理实现方法分析
Mar 17 Javascript
Vue自定义事件(详解)
Aug 19 Javascript
Vue.js样式动态绑定实现小结
Jan 24 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
微信小程序顶部导航栏可滑动并选中放大
Dec 05 Javascript
echarts实现晶体球面投影的实例教程
Oct 10 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
Nov 11 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 #Javascript
Node.js中sequelize时区的配置方法
Dec 10 #Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 #Javascript
关于react中组件通信的几种方式详解
Dec 10 #Javascript
vue项目中v-model父子组件通信的实现详解
Dec 10 #Javascript
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 #Javascript
利用ES6实现单例模式及其应用详解
Dec 09 #Javascript
You might like
PHP中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
绿色环保标语
2014/06/12 职场文书
临时用工协议书范本
2014/10/29 职场文书
中国世界遗产导游词
2015/02/13 职场文书
故意伤害辩护词
2015/05/21 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
Django框架中模型的用法
2022/06/10 Python