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 相关文章推荐
javaScript Array(数组)相关方法简述
Jul 25 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
Jan 22 Javascript
JavaScript中对象属性的添加和删除示例
May 12 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
Javascript实现可旋转的圆圈实例代码
Aug 04 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
Sep 16 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
javascript基础知识
Jun 07 Javascript
JavaScript中的冒泡排序法
Aug 03 Javascript
通过JS获取Request.QueryString()参数的值实现方法
Sep 27 Javascript
js实现贪吃蛇小游戏(容易理解)
Jan 22 Javascript
最常用的jQuery表单验证(简单)
May 23 jQuery
详解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 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
Angular实现响应式表单
2017/08/04 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python测试驱动开发实例
2014/10/08 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
python 杀死自身进程的实现方法
2019/07/01 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
大学生应聘自荐信
2013/10/11 职场文书
普师专业个人自荐信范文
2013/11/26 职场文书
校园十大歌手策划书
2014/02/01 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
商务信函英语问候语
2015/11/10 职场文书
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python