Angular 2父子组件数据传递之@ViewChild获取子组件详解


Posted in Javascript onJuly 04, 2017

前言

之前在《Angular 2父子组件数据传递之局部变量获取子组件其他成员》讲到过(如果有不懂的,可以先去看看),通过在子组件模版上设置局部变量的方式获取子组件的成员变量,但是有一个限制,必须在父组件的模版中设置局部变量才能够获取到子组件成员。那有没有办法实现不依赖于局部变量获取子组件成员呢? 答案:肯定是有的,接下来我们讲下通过@ViewChild来实现!

淡描@ViewChild

@ViewChild的作用是声明对子组件元素的实例引用,意思是通过注入的方式将子组件注入到@ViewChild容器中,你可以想象成依赖注入的方式注入,只不过@ViewChild不能在构造器constructor中注入,因为@ViewChild会在ngAfterViewInit()回调函数之前执行。

@VIewChild提供了一个参数来选择将要引入的组件元素,可以是一个子组件实例引用, 也可以是一个字符串(两者的区别,后面会讲)

Angular 2父子组件数据传递之@ViewChild获取子组件详解

下面我们来介绍一下两种用法。

1、当传入的是一个子组件实例引用

childenConponetn.ts

Angular 2父子组件数据传递之@ViewChild获取子组件详解

1、定义了一个类方法fun1() ,提供给父组件调用

parentComponent.ts

Angular 2父子组件数据传递之@ViewChild获取子组件详解

1、这里传入一个子组件实例引入,定义了一个变量child接收

2、定义了Onclick()方法,用于页面触发点击事件,模拟调用子组件中的方法

parentComponetn.html

Angular 2父子组件数据传递之@ViewChild获取子组件详解

1、父组件模版中input绑定了一个click点击事件,页面触发点击调用OnClick()方法

最终效果如下:

Angular 2父子组件数据传递之@ViewChild获取子组件详解

2、当传入的是一个字符串

parentComponent.ts

Angular 2父子组件数据传递之@ViewChild获取子组件详解

1、@ViewChild传入一个字符串myChild,变量child接收。其它不变

parentComponent.html

Angular 2父子组件数据传递之@ViewChild获取子组件详解

1、细心的你会发现这里在子组件模版中创建了一个局部变量#myChild,父组件中的myChild字符串解释为一个选择器。也就是一个元素包含模版局部变量#myChild,这就是与第一种方式唯一不同的地方,这里弥补了《Angular 2父子组件数据传递之局部变量获取子组件其他成员》只能在模版中使用子组件引入的缺陷

最终效果跟上面结果一样

总结

关于@ViewChild还有很多东西可说,这里我不做多说,我会在以后的文章中,单独写一遍来讲,感兴趣的朋友们请继续关注三水点靠木。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Flexigrid在IE下不显示数据的处理的解决方法
Oct 24 Javascript
javascript中处理时间戳为日期格式的方法
Jan 02 Javascript
fmt:formatDate的输出格式详解
Jan 09 Javascript
关于JavaScript对象的动态选择及遍历对象
Mar 10 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
jQuery实现图片预加载效果
Nov 27 Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 Javascript
js实现PC端和移动端刮卡效果
Mar 27 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 Vue.js
详解node如何让一个端口同时支持https与http
Jul 04 #Javascript
Angular 2父子组件之间共享服务通信的实现
Jul 04 #Javascript
jQuery实现动态给table赋值的方法示例
Jul 04 #jQuery
Angular 2父子组件数据传递之局部变量获取子组件其他成员
Jul 04 #Javascript
Angular 4.X开发实践中的踩坑小结
Jul 04 #Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 #jQuery
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 #jQuery
You might like
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
Javascript 类型转换方法
2010/10/24 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
Python数据操作方法封装类实例
2017/06/23 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
Overload和Override的区别
2012/09/02 面试题
《秋姑娘的信》教学反思
2014/02/28 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
美丽心灵观后感
2015/06/01 职场文书
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL