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 相关文章推荐
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
Jul 10 Javascript
JavaScript中变量提升 Hoisting
Jul 03 Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
当前页禁止复制粘贴截屏代码小集
Jul 24 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
详解使用Typescript开发node.js项目(简单的环境配置)
Oct 09 Javascript
ES6/JavaScript使用技巧分享
Dec 14 Javascript
JavaScript面向对象继承原理与实现方法分析
Aug 09 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 Javascript
Javascript原型链及instanceof原理详解
May 25 Javascript
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
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性能优化 产生高度优化代码
2011/07/22 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
详解Python中的变量及其命名和打印
2016/03/11 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
python用插值法绘制平滑曲线
2021/02/19 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python集合常见运算案例解析
2019/10/17 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
期终自我鉴定
2014/02/17 职场文书
大学生求职计划书
2014/04/30 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
个人年底工作总结
2015/03/10 职场文书
同学聚会通知短信
2015/04/20 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers