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中的isXX系列
Aug 01 Javascript
javascript + jquery实现定时修改文章标题
Mar 19 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
Mar 05 Javascript
Javascript之String对象详解
Jun 08 Javascript
js遍历json的key和value的实例
Jan 22 Javascript
微信小程序使用navigateTo数据传递的实例
Sep 26 Javascript
浅谈node中的cluster集群
Jun 02 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
Sep 16 Javascript
vuex actions传递多参数的处理方法
Sep 18 Javascript
JavaScript中的相等操作符使用详解
Dec 21 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中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
使用PHP开发留言板功能
2019/11/19 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
python装饰器的特性原理详解
2019/12/25 Python
pygame实现飞机大战
2020/03/11 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
社区安全检查制度
2014/02/03 职场文书
租房协议书范例
2014/10/14 职场文书
党的群众路线调研报告
2014/11/03 职场文书
同意报考证明
2015/06/17 职场文书
物资采购管理制度
2015/08/06 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书