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 相关文章推荐
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
Oct 30 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
JS代码实现根据时间变换页面背景效果
Jun 16 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
Jun 23 Javascript
vue better scroll 无法滚动的解决方法
Jun 07 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
Sep 05 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
Dec 25 Javascript
理解JavaScript中的对象
Aug 25 Javascript
Node.JS如何实现JWT原理
Sep 18 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 移除数组重复元素的一点说明
2008/11/27 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
python使用xpath中遇到:到底是什么?
2018/01/04 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
公司周年庆典邀请函
2014/01/12 职场文书
运动会班级口号
2014/06/09 职场文书
学生偷窃检讨书
2014/09/25 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
研究生导师推荐信
2015/03/25 职场文书
2015年司机工作总结
2015/04/23 职场文书
2015年路政工作总结
2015/05/22 职场文书
夏洛特的网观后感
2015/06/15 职场文书