@ViewChild的作用是声明对子组件元素的实例引用,意思是通过注入的方式将子组件注入到@ViewChild容器中,你可以想象成依赖注入的方式注入,只不过@ViewChild不能在构造器constructor中注入,因为@ViewChild会在ngAfterViewInit()回调函数之前执行。

@VIewChild提供了一个参数来选择将要引入的组件元素,可以是一个子组件实例引用, 也可以是一个字符串(两者的区别,后面会讲)

//子组件实例引用
@ViewChild(ChildrenComponent) child:ChildrenComponent; //字符串
@ViewChild("child") child2;

下面我们来介绍一下两种用法。

1、当传入的是一个子组件实例引用

children.component.ts

import { Component} from "@angular/core";@Component({selector:'app-children',templateUrl: './children.component.html',styleUrls: ['./children.component.less']
})
export class ChildrenComponent{fun1(){alert('子组件方法');}
}

parent.component.ts

import { Component} from "@angular/core";@Component({selector:'app-parent',templateUrl: './parent.component.html',styleUrls: ['./parent.component.less']
})
export class ParentComponent{@ViewChild(ChildrenComponent) child:ChildrenComponent;onClick(){this.child.fun1();}
}

1、这里传入一个子组件实例引入,定义了一个变量child接收

2、定义了Onclick()方法,用于页面触发点击事件,模拟调用子组件中的方法

parent.component.html

  <div class="parent_div"><p>父组件</p><div><input type="button" value="调用子组件方法" (click)="onClick()"></div><!-- 子组件指令 --><app-children></app-children></div>

父组件模版中input绑定了一个click点击事件,页面触发点击调用onClick()方法

2.当传入的是一个字符串

parent.component.ts

 import { Component} from "@angular/core";@Component({selector:'app-parent',templateUrl: './parent.component.html',styleUrls: ['./parent.component.less']
})
export class ParentComponent{@ViewChild('myChild') child;onClick(){this.child.fun1();}
}

1、@ViewChild传入一个字符串myChild,变量child接收。其它不变

parent.component.html

    <div class="parent_div"><p>父组件</p><div><input type="button" value="调用子组件方法" (click)="onClick()"></div><!-- 子组件指令 --><app-children #myChild></app-children></div>

两种效果是一样的。

转载于:https://www.cnblogs.com/zhumeiming/p/10339113.html

Angular2父子组件数据传递之@ViewChild获取子组件详解相关推荐

  1. 【微信小程序】组件间通信与事件-获取子组件的实例对象

    1.0 前言 1.1 为何写这篇笔记 小程序官方文档只粗略给了一段代码,让笔者找不到北,故记录下易于理解的过程,以便新手了解和使用 1.2 获取子组件实例对象的作用 当引用了组件,且父组件使用了监听函 ...

  2. Vue表单类的父子组件数据传递示例_vue.js_脚本之家

    使用Vue.js进行项目开发,那必然会使用基于组件的开发方式,这种方式的确给开发和维护带来的一定的便利性,但如果涉及到组件之间的数据与状态传递交互,就是一件麻烦事了,特别是面对有一大堆表单的页面. 在 ...

  3. angular使用@viewChild父组件获取子组件的数据和方法

    一. 父组件通过局部变量获取子组件的引 用  ,主动获取子组件的数据和方法 1. 使用#给子组件命名为#footer <app-footer #footer></app-footer ...

  4. vue组件通信之父组件主动获取子组件数据和方法

    ref 可以用来获取到dom节点,如果在组件中应用,也可以用来获取子组件的数据和方法. 比如,我定义了一个home组件,一个head组件,home组件中引用head组件. 此时,home组件是head ...

  5. 七十、Vue城市页面Ajax动态渲染和兄弟组件数据传递

    2020/10/29. 周四.今天又是奋斗的一天. @Author:Runsen 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  6. vue --- 获取子组件数据的一个应急方案$refs

    使用$refs需要注意以下2点: 1.html方法使用子组件时,需使用ref = "xxx" 声明. 2.在父组件中使用,this.refs.xxx.msg 获取数据 <!D ...

  7. 组件、局部的组件、表行组件、组件数据传递

    组件:基础的基础 知识点 组件(Component,Portlet) 组件 组件就是页面上的一小块区域内容,完成一个小的页面功能,请参照视频第六课. 综合例 <div id="myAp ...

  8. vue 同页面不同组件数据传递

    不用 vuex 同页面不同组件数据传递,用vuex的这篇文章可以忽略! 直接举例: 一个页面有两个组件,其中组件A的数据可以传递到组件B,同理组件B的数据可以传递到组件A, 即AB两个组件可以互相传递 ...

  9. vue3 中通过$refs 获取子组件数据

    vue2 中获取子组件中的数据方法,可以使用 this.$refs ,但此方式在vue3中不适用了. 问题: 点击删除行的同时修改表格中数据选中状态,需要通过 ref 操作表格中的数据. 具体代码如下 ...

最新文章

  1. 人脸检测--Supervised Transformer Network for Efficient Face Detection
  2. 可交互的对抗网络如何增强人类创造力?
  3. 《压缩感知回顾与展望》读书笔记
  4. MyBatis查询两个字段,返回Map,一个字段作为key,一个字段作为value的实现
  5. 启动延时缩短 50%-80%,函数计算发布镜像加速功能
  6. NDCG:推荐系统/搜索评价指标
  7. HTML手机上图片显示被压扁,在重新调整Web浏览器HTML |时,文本会被压扁CSS
  8. 集群、RAC和MAA
  9. micropython中文社区-micropython支持中文啦!
  10. 你羡慕了吗?10万个数字人民币红包派发,每个200元
  11. Java map遍历
  12. k8s之创建etcd集群
  13. 硬核!尽量避免 bug 手法,让测试彻底失业
  14. Windows Phone 7(WP7)开发 获取网络状态
  15. 二叉排序树的插入 java_leetcode刷题笔记-701. 二叉搜索树中的插入操作(java实现)...
  16. 2021年高压电工模拟考试题及高压电工模拟考试题库
  17. C语言平年闰年该月天数,2. 输入年月日,求它是该年的第几天。注:闰年的2月有29天,平年的2月有28天。(C语言编程题)...
  18. php-screw 安装,PHP_SCREW安装
  19. 获取手机存储空间大小
  20. 中文转拼音 中文转罗马声调

热门文章

  1. android listview万能适配器
  2. jQuery 学习之路(1):引子
  3. 使用header发送状态代码
  4. Android OpenGL ES 开发教程(20):颜色Color
  5. Android应用自动更新功能实现使用AsyncTask!
  6. 使用T-SQL导入多个文件数据到SQL Server中一文的疑惑
  7. 模糊数学笔记:七、模糊综合评判决策
  8. NS2安装错误系列(1)
  9. nginx proxy svn 加快_Hexo+Nginx+SVN搭建网站
  10. 常见的数据结构——栈、队列、数组、链表和红黑树