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、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 Javascript
深入理解Javascript中的valueOf与toString
Jan 04 Javascript
Canvas实现动态的雪花效果
Feb 13 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
说说如何在Vue.js中实现数字输入组件的方法
Jan 08 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
Apr 11 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
Sep 01 Javascript
在vue中阻止浏览器后退的实例
Nov 06 Javascript
微信小程序实现打卡签到页面
Sep 21 Javascript
Java 生成随机字符的示例代码
Jan 13 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 得到根目录的 __FILE__ 常量
2008/07/23 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
Javascript Global对象
2009/08/13 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python模拟用户登录验证
2017/09/11 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
农村婚庆司仪主持词
2014/03/15 职场文书
入股协议书范本
2014/04/14 职场文书
中考标语大全
2014/06/05 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
广播体操比赛主持词
2015/06/29 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python