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 相关文章推荐
Extjs学习笔记之四 工具栏和菜单
Jan 07 Javascript
50款非常棒的 jQuery 插件分享
Mar 29 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
JsRender实用入门教程
Oct 31 Javascript
基于jquery实现百度新闻导航菜单滑动动画
Mar 15 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 Javascript
H5实现仿flash效果的实现代码
Sep 29 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 Javascript
OpenLayers3实现图层控件功能
Sep 25 Javascript
ant design vue datepicker日期选择器中文化操作
Oct 28 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 Javascript
详解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异步调用socket实现代码
2012/01/12 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
简述vue状态管理模式之vuex
2018/08/29 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
js实现随机数小游戏
2019/06/28 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
python中List的sort方法指南
2014/09/01 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python set集合使用方法解析
2019/11/05 Python
Python如何重新加载模块
2020/07/29 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
国际象棋商店:The Chess Store
2018/07/09 全球购物
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
同学会主持词
2014/03/18 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书