详解如何在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 相关文章推荐
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 Javascript
jQuery插件datepicker 日期连续选择
Jun 12 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
Sep 26 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
Feb 03 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 jQuery
Vue 2.0在IE11中打开项目页面空白的问题解决
Jul 16 Javascript
JS SetInterval 代码实现页面轮询
Aug 11 Javascript
详解.vue文件中style标签的几个标识符
Jul 17 Javascript
在vue中使用jsx语法的使用方法
Sep 30 Javascript
如何基于filter实现网站整体变灰功能
Apr 17 Javascript
JS实现简单移动端鼠标拖拽
Jul 23 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
Nov 16 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
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
中班幼儿评语大全
2014/04/30 职场文书
支部书记四风对照材料
2014/08/28 职场文书
冰峪沟导游词
2015/02/09 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
正确使用MySQL update语句
2021/05/26 MySQL