angular中@ViewChild、@ViewChildren的使用

2023-11-16

@ViewChild和@ViewChildren会在父组件钩子方法ngAfterViewInit调用之前赋值。

获取DOM节点

1、在html中给DOM节点设置一个模板应用变量myBox

 <div #myBox>
      我是一个div
    </div>

2、在js中引入ViewChild

import { Component, OnInit , ViewChild } from '@angular/core';

3、通过ViewChild装饰器获取DOM节点

@ViewChild('myBox') myBox: any;

4、在生命周期里面获取DOM

 ngAfterViewInit() {
        this.myBox.nativeElement;
    }

获取子组件对象

一. 通过模板变量名

1、在子组件中定义方法

public 方法名() {
    console.log('子组件');
  }

2、在父组件html中调用子组件的时候定义一个模板变量header

 <app-header #header></app-header>

3、在父组件js中引入ViewChild

 import { ViewChild } from '@angular/core';
 import { HeaderComponent} from '子组件路径';

4、父组件通过ViewChild装饰器获取一个组件,并赋值给一个变量

   @ViewChild('header') header: HeaderComponent;

5、父组件通过变量访问子组件的方法

this.header.方法名();

二. 通过组件类

1、在父组件html中调用子组件

<app-header></app-header>

3、在父组件js中引入ViewChild

import { ViewChild } from '@angular/core';
 import { HeaderComponent} from '子组件路径';

4、父组件通过ViewChild装饰器获取一个组件,并赋值给一个变量

   @ViewChild(HeaderComponent) headerComponent: HeaderComponent;

5、父组件通过变量访问子组件的方法

   this.headerComponent.方法名();

@ViewChildren获取子组件对象列表

当选择器是TemplateRef(模版应用变量)的时候,则会获取到html里面所有的ng-template的节点

1、在父组件html中调用子组件

  <release-people-form [peopleId]="addPeopleId" (close)="handlePopCancel()" #peopleForm></release-people-form>
  <correcting-people-form [peopleId]="addPeopleId" (close)="handlePopCancel()" #peopleForm></correcting-people-form>
  <mental-people-form [peopleId]="addPeopleId" (close)="handlePopCancel()" #peopleForm></mental-people-form>

3、在父组件js中引入ViewChildren

import { ViewChildren} from '@angular/core';

4、父组件通过ViewChildren装饰器获取一个组件列表,并赋值给一个变量

@ViewChildren('peopleForm') formList: QueryList<ElementRef>;

5、父组件通过变量访问子组件的方法

   ngAfterViewInit() {
   	 console.log(this.formList); //组件对象数组
  	 console.log(this.formList.toArray()[index] as any); //获取某个对象
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

angular中@ViewChild、@ViewChildren的使用 的相关文章

随机推荐

  • [计算机毕业设计]元学习方法的小样本图像分类算法

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • Vue8基础:事件处理

    1 事件处理 1 绑定监听 v on xxx fun xxx fun xxx fun 参数 默认事件形参 event 隐含属性对象 event 2 事件修饰符 prevent 阻止事件的默认行为 event preventDefault s
  • LLE原理及推导过程

    1 概述 所谓LLE 局部线性嵌入 即 Locally Linear Embedding 的降维算法 在处理所谓流形降维的时候 效果比PCA要好很多 首先 所谓流形 我们脑海里最直观的印象就是Swiss roll 在吃它的时候喜欢把它整个摊
  • 学习使用Shader处理纹理

    使用Shader处理纹理本是件简单的事情 但是我在尝试写一个简单的例子的时候却犯了个错误 导致郁闷了一天 这个稍后再说 先整理下怎么用Shader处理纹理吧 1 原理 用Shader处理纹理的原理其实很简单 将纹理通过一个uniform变量
  • 游戏王决斗连接显示服务器错误,游戏王决斗链接

    游戏王决斗链接公测常见问题一览 游戏王决斗链接最近也是正式公测啦 许多小伙伴在公测游玩中遇到了许多问题 下面就让小编带大家了解一下常见问题的解决方法吧 游戏王决斗链接公测常见问题 一 公测删档吗 不删档 决斗王链接在公测之前进行了好几次删档
  • windows修改mysql的my.ini文件导致服务启动失败

    windows修改mysql的my ini文件导致服务启动失败 解决 my ini的编码格式为ANSI 当我在服务器电脑直接打开编辑然后保存 默认保存的编码格式utf 8 所以导致启动失败
  • 期货开户用心服务每个客户

    用心服务每一个客户 以信为本 点石成金 蓄之既久 其发必速 如果价格连续多天在 个狭窄的幅度内升降 在图表上形成一幅有如建筑地盘布满地基桩的图景 习惯上称之为密集区 亦即专家所说的技术支持区 这个密集区一旦向上突破或向下突破 就会造成一个烈
  • C语言输出指针变量地址(十六进制)

    include
  • 微信小程序使用canvas绘制二维码实现跳转小程序

    开始接到这个需求的时候 我查阅文档获取小程序码 微信开放文档 发现两种途径 需要后端在服务器上调用接口拿到二维码 因为调用的 https api weixin qq com这个域名是不允许上白名单 或者是云开发 显然他们不需要云开发 这时候
  • C++ if 语句

    一个 if 语句 由一个布尔表达式后跟一个或多个语句组成 语法 C 中 if 语句的语法 if boolean expression 如果布尔表达式为真将执行的语句 如果布尔表达式为 true 则 if 语句内的代码块将被执行 如果布尔表达
  • Unity上玩转数字人(Avatar)

    现在数字人越来越有趣了 现在好多公司都在做 那我也想在Unity玩转一下 怎么玩呢 1 数字人准备以及跳舞动画 首先我们需要有数字人资源 数字人资源从哪来呢 第一你可以直接去Unity assetstore上去搜一下免费的数字人 有2个还是
  • C# 网络编程之获取本机名、ip地址、域名、物理位置

    在C 网络编程中 主机域名与ip之间能相互转换 同时DNS中有Dns类 IPHostEntry类 IPAddress类 DnsPermission类实现DNS的一些简单功能 下面主要讲述一个C 的Windows应用程序 实现以下功能 1 获
  • git 和 svn

    在对比集中式版本控制svn和分布式的版本控制git的时候可能会有一些疑问 例如 git 不联网可以使用吗 集中式版本控制系统的好处是什么 以下总结了一些问题的对比 都是个人理解 如有不正确的请指正 设计思路 git 分布式的核心设计是同步
  • C++学习练习 之文件操作

    C 学习练习 之文件操作 程序运行时产生的数据都属于临时数据 程序一旦运行结束 都会被释放 通过文件可以将数据持久化 C 中对文件操作需要包含头文件 lt fstream gt 文件类型分为两种 1 文本文件 文件以文本的ASCII码形式存
  • Java基础--IO操作

    一 IO原理及分类 一 IO原理 1 I O是Input Output的缩写 I O技术是非常实用的技术 用于处理设备之间的数据传输 如读写文件 网络通信等 2 java程序中对于数据的输入 输出操作一般都是以流的方式进行 3 java i
  • 2023华为OD机试真题 Python【报文回路】

    题目 在 IGMP 协议中 存在两种重要的报文 查询报文和响应报文 这两种报文负责维持组播通路 在一个通路中 ROUTER 会定期给 HOST 发送查询报文 收到查询报文的 HOST 应该回复一个响应报文 从而保持两者的连接状态 如果某个
  • Emojify – Create your own emoji with Deep Learning 通过深度学习创建你自己的表情

    全文总览 本文目的 原文链接 我的电脑环境 数据集下载 代码下载 本文目的 深度学习初级项目 Emojify Create your own emoji with Deep Learning 通过深度学习创建你自己的表情 本文旨在描述源代码
  • 华为OD机试 - 需要打开多少监控器(Java & C)

    题目描述 某长方形停车场 每个车位上方都有对应监控器 当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时 监控器才需要打开 给出某一时刻停车场的停车分布 请统计最少需要打开多少个监控器 输入描述 第一行输入m n表示长宽 满足1
  • Vscode代码量统计

    Vscode代码量统计 安装vscode扩展插件 开始统计 结果 安装vscode扩展插件 插件商城中搜索 VS Code Counter 开始统计 安装完毕后 重新加载vscode 快捷键ctrl shift p输入指令 结果
  • angular中@ViewChild、@ViewChildren的使用

    ViewChild和 ViewChildren会在父组件钩子方法ngAfterViewInit调用之前赋值 获取DOM节点 1 在html中给DOM节点设置一个模板应用变量myBox div 我是一个div div 2 在js中引入View