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 相关文章推荐
js实现两个值相加alert出来精确到指定位
Sep 25 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
JS获得多个同name 的input输入框的值的实现方法
Jan 09 Javascript
js实现3d悬浮效果
Feb 16 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
Javascript 关于基本类型和引用类型的个人理解
Nov 01 Javascript
Node绑定全局TraceID的实现方法
Nov 14 Javascript
vant IndexBar实现的城市列表的示例代码
Nov 20 Javascript
Javascript地址引用代码实例解析
Feb 25 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 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/12/06 PHP
CI框架中zip类应用示例
2014/06/17 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
强制设为首页代码
2006/06/19 Javascript
共享自己写一个框架DreamScript
2007/01/20 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
jquery实现拖动效果
2016/08/10 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
python中set常用操作汇总
2016/06/30 Python
Python网络编程 Python套接字编程
2017/09/13 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
电气工程师岗位职责
2014/01/01 职场文书
代理商会议邀请函
2014/01/27 职场文书
办公用房租赁协议书
2014/11/29 职场文书
申报材料格式
2014/12/30 职场文书
长城导游词300字
2015/01/30 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
如何在C++中调用Python
2021/05/21 Python
Python竟然能剪辑视频
2021/05/25 Python