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 使用自定义标签的区别
Oct 15 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
May 18 Javascript
Javascript表达式中连续的 && 和 || 之赋值区别
Oct 17 Javascript
一个获取第n个元素节点的js函数
Sep 02 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
javascript返回顶部的按钮实现方法
Jan 09 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
js动态引入的四种方法
May 05 Javascript
json数据传到前台并解析展示成列表的方法
Aug 06 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
Oct 09 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
php自定义时间转换函数示例
2016/12/07 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
php解决安全问题的方法实例
2019/09/19 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
JavaScript Chart 插件整理
2010/06/18 Javascript
JavaScript 的继承
2011/10/01 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python小项目之五子棋游戏
2019/12/26 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
关于环保的演讲稿
2014/05/10 职场文书
法定授权委托证明书
2014/09/27 职场文书
党员剖析材料范文
2014/12/18 职场文书
班主任培训研修日志
2015/11/13 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis