目录

一、概述

二、原生JS操作Dom

三、ViewChild操作Dom

四、父组件中通过ViewChild调用子组件


一、概述

Angular中可以用原生JS操作Dom,也可以用Angular提供的ViewChild装饰器来操作Dom。ViewChild底层对原生JS进行了封装。

二、原生JS操作Dom

基本示例

<div id="box">this is a box</div>
ngOnInit(): void {// Angular中变量要指定类型let oBox: any = document.getElementById('box');oBox.style.color = 'red';
}

注意事项

ngOnInit生命周期函数触发时只能保证组件和指令初始化完成,并不是真正的dom节点加载完成。如下代码所示,因为Angular指令的存在,获取不到dom节点。

<div id="box2" *ngIf="expression">this is a box</div>
public expression = true;ngOnInit(): void {let oBox2: any = document.getElementById('box2');oBox2.style.color = 'blue'; // 报错,找不到dom节点
}

注意事项 - 解决方法

ngAfterViewInit生命周期函数在视图加载完成后触发,即dom加载完成后触发。推荐把dom操作放在该生命周期函数中。

<div id="box2" *ngIf="expression">this is a box</div>
ngAfterViewInit(): void {let oBox2: any = document.getElementById('box2');oBox2.style.color = 'blue'; // 成功获取dom节点
}

三、ViewChild操作Dom

ViewChild是属性装饰器,可以从模板视图中获取匹配的Dom节点。Dom加载在ngAfterViewInit钩子函数调用前完成,因此在ngAfterViewInit钩子函数中,能正确获取查询的Dom节点。

使用ViewChild获取Dom节点有一个前提,即使用井号给Dom节点起一个名字,如下代码所示。

<div #mybox>我是一个dom节点</div>
import { Component, OnInit, ViewChild } from '@angular/core';...@ViewChild('mybox') mybox: any; ngAfterViewInit(): void {// 获取Dom节点let el = this.mybox.nativeElement;el.style.color = 'green';
}

四、父组件中通过ViewChild调用子组件

ViewChild不仅可以获取Dom节点,还可以获取一个组件的实例。

第一步:在模板中给子组件起一个名字

<app-news #news></app-news><div>我是一个dom节点
</div>
import { Component, OnInit, ViewChild } from '@angular/core';...// 获取子组件实例
@ViewChild('news') news: any;// 调用子组件的方法
this.news.onclick();

Angular—Dom操作相关推荐

  1. ihtml2document能不能根据id获取dom_回到基础:什么是DOM及DOM操作?

    译者:前端小智 来源:valentinog 为了保证的可读性,本文采用意译而非直译. 文本主要介绍文档对象模型(DOM),了解什么是DOM操作,以及如何使用砶 DOM API 与 JS 中的 Web ...

  2. MV* 框架 与 DOM操作为主 JS库 的案例对比

    最近分别使用 Zepto 和 Avalon框架写了个 SPA项目,贴出来讨论下 JS DOM操作为主 JS库 与 MV* 框架的对比 案例(MV* 框架 与 DOM操作 JS库 实例对比) 购物车页面 ...

  3. 使用ViewContainerRef探索Angular DOM操作技术

    每当我阅读中遇到,关于Angular中使用DOM的内容时,总会看到一个或几个这样的类:ElementRef,TemplateRef,ViewContainerRef等等. 不幸的是,虽然其中的一些被A ...

  4. 什么是DOM及DOM操作?

    什么是 DOM ? DOM(文档对象模型)是针对于xml但是扩展用于HTML的应用程序编程接口,定义了访问和操作HTML的文档的标准. W3C文档对象模型是中立于平台和语言之间的接口,它允许程序和脚本 ...

  5. 为什么DOM操作很慢

    转自:http://kb.cnblogs.com/page/534571/ 一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来 ...

  6. jQuery 学习笔记一(认识jQuery jQuery选择器 jQuery中的DOM操作)

    第一章 认识jQuery jQuery代码风格 $(document).ready(function(){ //... }); 简化 $(function(){ //... }); jQuery对象转 ...

  7. 03-老马jQuery教程-DOM操作(上)

    jQuery DOM操作 在没有jQuery之前,DOM的操作相对来说有点麻烦,尤其是DOM节点的搜索.目前我们已经学习了jQuery的选择器,接下带大家一块学习jQuery的DOM操作,jQuery ...

  8. Jquery基础之DOM操作

    Jquery基础之DOM操作 Dom是Document Object Model的缩写,意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DO ...

  9. DOM操作之属性和样式操作

    在DOM操作,除了前面的节点操作以外,常常被用到的操作还有属性操作和节点操作,下面,主要来总结一下jQuery中的属性操作方法和样式操作方法. 在开始操作前,我们需要先在html中添加如下代码,后面所 ...

最新文章

  1. HDU ACM 1267 下沙的沙子有几粒?-gt;DP
  2. TLD(Tracking-Learning-Detection)学习与源码理解之(六)
  3. EXCLE图形插入实例
  4. 【算法分析】实验 4. 回溯法求解0-1背包等问题
  5. 在git 2.13之前,只保存多个已更改的文件中的一个文件
  6. RxJava操作符相关学习资料
  7. 安装win10+黑苹果双系统零基础教程
  8. Java IO——字节流和字符流详解区别对比
  9. oracle .net 中文,C# 连接Oracle 中文乱码问题解决办法
  10. Centos7安装elasticsearch7.14.0遇到问题(无法远程访问;内存小;bootstrap checks failed)
  11. 阿泰,水晶报表--pull模式样板
  12. HTML用户名判断,用户名判断(练习)
  13. MediaInfo与wmv3 wma3 的解码器
  14. 自动化办公——PPT免费模板(强力推荐)
  15. python定义一个圆类_python设计一个Circle(圆)类,包括圆心位置`,半径,颜色等属性。编写构造方法和其他方法,计算周长和面积。...
  16. tp5insertAll和saveAll
  17. bugly怎么读_使用指南
  18. 联想互联网诊疗与AI医学影像生态解决方案——提供数据连续性的医疗保健和生命科学解决方案
  19. 微信小程序调用高德api定位当前经纬度,根据城市名获取对应经纬度
  20. Kafka可靠性分析

热门文章

  1. Windows下的工作组与域环境以及域的搭建管理流程
  2. 小心“破坏性创新”成为自己的掘墓人
  3. 力扣解法汇总592-分数加减运算
  4. 中国邮政竟然开咖啡店了?
  5. 蔚来汽车交付量连续2个月下滑,理想汽车再登顶,小鹏汽车剑指9月
  6. java实现将整数转化为中文大写金额
  7. 随着计算机网络的快速发展手机使用的普遍化,金标尺公考
  8. 百元左右蓝牙耳机哪款适合玩游戏?低延迟+高颜值这五款蓝牙耳机不信你不服
  9. in App Purchases一个注意事项
  10. Android Studio遇到的一些问题