详解如何在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 相关文章推荐
jQuery随便控制任意div隐藏的方法
Jun 28 Javascript
JavaScript中window、doucment、body的解释
Aug 14 Javascript
jquery如何实现锚点链接之间的平滑滚动
Dec 02 Javascript
jQuery选择器querySelector的使用指南
Jan 23 Javascript
JavaScript随机生成信用卡卡号的方法
Apr 07 Javascript
10个最优秀的Node.js MVC框架
Aug 24 Javascript
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
node实现登录图片验证码的示例代码
Apr 20 Javascript
js实现图片放大并跟随鼠标移动特效
Jan 18 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
javascript设计模式之迭代器模式
Jan 30 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
Mar 12 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
短波问题解答
2021/02/28 无线电
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
33道php常见面试题及答案
2015/07/06 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python生成随机mac地址的方法
2015/03/16 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
python自动化发送邮件实例讲解
2021/01/04 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
大学生职业生涯规划书模版
2013/12/30 职场文书
项目合作意向书范本
2014/04/01 职场文书
演讲稿格式范文
2014/05/19 职场文书
化学专业自荐信
2014/05/28 职场文书
建筑工地标语
2014/06/18 职场文书
公务员政审个人总结
2015/02/12 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
详解TypeScript的基础类型
2022/02/18 Javascript
 Python 中 logging 模块使用详情
2022/03/03 Python