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 相关文章推荐
javascript函数库-集合框架
Apr 27 Javascript
JavaScript中Object和Function的关系小结
Sep 26 Javascript
JS等比例缩小图片尺寸的实例
Feb 27 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
Oct 01 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
jQuery实现文本框邮箱输入自动补全效果
Nov 17 Javascript
jquery单击事件和双击事件冲突解决方案
Mar 02 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
Oct 27 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
vue3+typescript实现图片懒加载插件
Oct 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中文编码小技巧
2014/12/25 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
php实现算术验证码功能
2018/12/05 PHP
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
Python读写配置文件的方法
2015/06/03 Python
python使用KNN算法手写体识别
2018/02/01 Python
更新修改后的Python模块方法
2019/03/03 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
安全事故检讨书
2014/01/18 职场文书
采购求职信
2014/03/17 职场文书
优秀大学生自荐信
2014/06/09 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
高中英语教学反思范文
2016/03/02 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
Java基础——Map集合
2022/04/01 Java/Android