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 相关文章推荐
IE php关于强制下载文件的代码
Aug 23 Javascript
js 分栏效果实现代码
Aug 29 Javascript
通过DOM脚本去设置样式信息
Sep 19 Javascript
javascript检查表单数据是否改变的方法
Jul 30 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
javascript实现文字无缝滚动效果
Aug 26 Javascript
利用js给datalist或select动态添加option选项的方法
Jan 25 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
May 10 Javascript
vue项目配置同一局域网可使用ip访问的操作
Oct 23 Javascript
ES2020让代码更优美的运算符 (?.) (??)
Jan 04 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数据库开发知多少
2006/10/09 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
js实现旋转木马效果
2017/03/17 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
Python实现基于HTTP文件传输实例
2014/11/08 Python
python实现批量改文件名称的方法
2015/05/25 Python
Django 拆分model和view的实现方法
2019/08/16 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
国际贸易毕业生自荐书
2014/06/22 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
2015年仓库工作总结
2015/04/09 职场文书
信用卡催款律师函
2015/05/27 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers
如何利用python实现Simhash算法
2022/06/28 Python
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS