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中for循序中延迟加载动态效果的具体实现
Aug 18 Javascript
如何编写高质量JS代码
Dec 28 Javascript
Javascript 对cookie操作详解及实例
Dec 29 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
JavaScript你不知道的一些数组方法
Aug 18 Javascript
JavaScript实现短暂提示框功能
Apr 04 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
简单使用webpack打包文件的实现
Oct 29 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
Nov 04 Javascript
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
在VUE style中使用data中的变量的方法
Jun 19 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来实现网络服务
2009/09/15 PHP
php checkbox 取值详细说明
2010/08/19 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
Python发送email的3种方法
2015/04/28 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
酒吧副总经理岗位职责
2013/12/10 职场文书
教师业务学习制度
2014/01/25 职场文书
中学生期末评语
2014/02/03 职场文书
三爱活动实施方案
2014/03/19 职场文书
公司保密承诺书
2014/03/27 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
python中数组和列表的简单实例
2022/03/25 Python