详解如何在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 相关文章推荐
js中字符替换函数String.replace()使用技巧
Aug 14 Javascript
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
Oct 11 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
基于JS实现省市联动效果代码分享
Jun 06 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
Jun 30 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
Aug 08 Javascript
Layui实现数据表格默认全部显示(不要分页)
Oct 26 Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 Javascript
javascript实现点击按钮切换轮播图功能
Sep 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
PHP技术开发技巧分享
2010/03/23 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
javascript 拖动表格行实现代码
2011/05/05 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
微信小程序实战之轮播图(3)
2017/04/17 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
日语专业个人求职信范文
2014/02/02 职场文书
留守儿童工作方案
2014/06/02 职场文书
青年志愿者活动方案
2014/08/17 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
父母教会我观后感
2015/06/17 职场文书
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android