详解如何在angular2中获取节点


Posted in Javascript onNovember 23, 2017

我们知道在angular2中ts文件支持js代码,为什么用document.getElementById没法获取元素节点呢?

其实在angular2中先加载ts文件,再加载view,所以获取不到节点。

在应用层直接操作 DOM,就会造成应用层与渲染层之间强耦合,导致我们的应用无法运行在不同环境,如 web worker 中,因为在 web worker 环境中,是不能直接操作 DOM。

通过 ElementRef 我们就可以封装不同平台下视图层中的 native 元素 (在浏览器环境中,native 元素通常是指 DOM 元素),最后借助于 Angular 提供的强大的依赖注入特性,我们就可以轻松地访问到 native 元素。

angular2有生命周期钩子AfterViewInit可以帮助我们在view加载完之后再执行相应的ts

ts:

import { Component, ElementRef ,AfterViewInit} from '@angular/core';

exportclassAppComponent { 

constructor(privateelementRef: ElementRef) {

 }

ngAfterViewInit() {

  let divEle =this.elementRef.nativeElement.querySelector('div');//获取第一个div

  console.dir(divEle);

  let div = doxcument.getElementById("div");  //获取id为‘div'的节点

}

}

下面有一种优化方案,运用angular内置属性装饰器@ViewChild

ts:

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

exportclassAppComponent{

@ViewChild('greet')

 greetDiv: ElementRef;

ngAfterViewInit() {this.greetDiv.nativeElement.style.backgroundColor ='red'; }

}

html:

<div #greet>hello world</div>  //element的标识"#name",@ViewChild根据这个搜索元素

angular中怎么获取dom元素

步骤分解:

第一步:给要获取的元素一个ng-model变量,并且绑定事件啦!

<div class="home" ng-model="dirName"  ng-mouseenter="switchImage($event,dirName)"></div>  //给要获取的元素一个ng-model变量

第二步:在controller中利用$event.target获取dom元素即可!

$scope.switchImage = function($event, value) { 
      3       $($event.target).on("mouseenter mouseleave",function(e) {
         var w = $(this).width(); // 得到盒子宽度
         var h = $(this).height();// 得到盒子高度
         var x = (e.pageX - this.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
         // 获取x值
         var y = (e.pageY - this.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
         // 获取y值
         var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4; 





//direction的值为“0,1,2,3”分别对应着“上,右,下,左”
         // 将点的坐标对应的弧度值换算成角度度数值
         var dirName = new Array('上方','右侧','下方','左侧');
         if(e.type == 'mouseenter' && direction == 1){
           $(this).find('.profil-photo').html(dirName[direction]+'离开');







}else{ 
 





 $(this).find('.profil-photo').html(dirName[direction]+'离开'); 





} 




}); 



}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
删除javascript所创建子节点的方法
May 21 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
Jun 12 Javascript
JS全局变量和局部变量最新解析
Jun 24 Javascript
node+express制作爬虫教程
Nov 11 Javascript
性能优化之代码优化页面加载速度
Mar 01 Javascript
Vue resource中的GET与POST请求的实例代码
Jul 21 Javascript
Node.js使用Express.Router的方法
Nov 14 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
详解微信UnionID作用
May 15 Javascript
JavaScript逻辑运算符相关总结
Sep 04 Javascript
用JavaScript实现贪吃蛇游戏
Oct 23 Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 #Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 #Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 #Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 #Javascript
初识 Vue.js 中的 *.Vue文件
Nov 22 #Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
Nov 22 #Javascript
基于JavaScript实现表格滚动分页
Nov 22 #Javascript
You might like
1 Tube Radio
2021/03/02 无线电
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
PHP attributes()函数讲解
2019/02/03 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
JS 建立对象的方法
2007/04/21 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
javascript工具库代码
2012/03/29 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Python3实现购物车功能
2018/04/18 Python
使用python存储网页上的图片实例
2018/05/22 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
python操作gitlab API过程解析
2019/12/27 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
高中生物教学反思
2014/02/05 职场文书
运动会演讲稿200字
2014/08/25 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
讲解MySQL增删改操作
2022/05/06 MySQL
Java 数组的使用
2022/05/11 Java/Android
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers