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实现雪花飘落效果
Aug 26 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
Aug 29 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
javascript实现复选框选中属性
Mar 25 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
javascript移动开发中touch触摸事件详解
Mar 18 Javascript
javascript 中null和undefined区分和比较
Apr 19 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
Vue动态组件与异步组件实例详解
Feb 23 Javascript
原生js实现九宫格拖拽换位
Jan 26 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中strtotime函数使用方法详解
2011/11/27 PHP
PHP数组操作――获取数组最后一个值的方法
2015/04/14 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
Python算法应用实战之栈详解
2017/02/04 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
深入浅析python 中的匿名函数
2018/05/21 Python
python3中的md5加密实例
2018/05/29 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
基于python实现百度翻译功能
2019/05/09 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
《美丽的公鸡》教学反思
2014/02/25 职场文书
小学庆六一活动方案
2014/02/28 职场文书
个人承诺书
2014/03/26 职场文书
营销团队口号
2014/06/06 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
2014财务年终工作总结
2014/12/08 职场文书
工作保证书
2015/01/17 职场文书
爱的教育读书笔记
2015/06/26 职场文书
GPU服务器的多用户配置方法
2022/07/07 Servers