安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Angular自定义指令Tooltip

1月25日 囍孤女投稿
  头条创作挑战赛
  本文同步本人掘金平台的文章:https:juejin。cnpost7082241253819023397
  一起养成写作习惯!这是我参与掘金日新计划4月更文挑战的第3天,点击查看活动详情。
  Yeah,关注我的读者应该知道,上一篇文章了解Angular开发的内容,我们已经概览了Angular的相关内容。在自定义指令的部分,我们已经能够实现编写,但是,在实际场景中,我们还需要标准化的管理。
  Angular是Angular。js的升版
  So,本文,我们就以Tooltip来讲解下自定义指令的内容。
  线上效果图,如下:
  目录结构
  在上一篇文章的实现的代码项目基础上,执行命令行:进入directives文件夹cddirectives创建tooltip文件夹mkdirtooltip进入tooltip文件夹cdtooltip创建tooltip组件nggeneratecomponenttooltip创建tooltip指令nggeneratedirectivetooltip复制代码
  执行完上面的命令行之后,你会得到appdirectivetooltip的文件目录结构如下:tooltiptooltiptooltip组件userlist。component。html页面骨架userlist。component。scss页面独有样式userlist。component。spec。ts测试文件userlist。component。tsjavascript文件tooltip。directive。spec。ts测试文件tooltip。directive。ts指令文件复制代码
  嗯,这里我将组件放在tooltip的同级,主要是方便管理。当然,这个因人而异,你可以放在公共组件components文件夹内。编写tooltip组件
  在html文件中,有:{{data。content}}复制代码
  在样式文件。scss中,有:black:000000;white:caretsize:6tooltipbg:transparentize(black,0。25);transparentize是sass的语法gridgutterwidth:30bodybgcolor:appanimtime:200appanimcurve:stdborderradius:5zindexmax:100;:host伪类选择器,给组件元素本身设置样式:host{position:padding:gridgutterwidth3gridgutterwidth2;backgroundcolor:color:opacity:0;transition:textalign:borderradius:zindex:}。caret{脱字符width:0;height:0;borderleft:6borderright:6borderbottom:6position:top:left:50;marginleft:caretsize2;borderbottomcolor:}复制代码
  嗯,css是一个神奇的东西,之后会安排一篇文章来讲解下sass相关的内容。。。
  然后,在javascript文件tooltip。component。ts内容如下:import{Component,ElementRef,元素指向HostBinding,OnDestroy,OnInit}Component({selector:apptooltip,标识符,表明我这个组件叫做啥,这里是apptooltiptemplateUrl:。tooltip。component。html,本组件的骨架styleUrls:〔。tooltip。component。scss〕本组件的私有样式})exportclassTooltipComponentimplementsOnInit{publicdata:在directive上赋值privatedisplayTimeOut:组件本身host绑定相关的装饰器HostBinding(style。top)hostStyleTop!:HostBinding(style。left)hostStyleLeft!:HostBinding(style。opacity)hostStyleOpacity!:constructor(privateelementRef:ElementRef){}ngOnInit():void{this。hostStyleTopthis。data。elementPosition。if(this。displayTimeOut){clearTimeout(this。displayTimeOut)}this。displayTimeOutsetTimeout((:any){这里计算tooltip距离左侧的距离,这里计算公式是:tooltip。left目标元素的。width(tooltip。width2)this。hostStyleLeftthis。data。elementPosition。leftthis。data。element。clientWidth2this。elementRef。nativeElement。clientWidth2pxthis。hostStyleOpacity1;this。hostStyleTopthis。data。elementPosition。bottom10px},500)}组件销毁ngOnDestroy(){组件销毁后,清除定时器,防止内存泄露if(this。displayTimeOut){clearTimeout(this。displayTimeOut)}}}复制代码编写tooltip指令
  这是本文的重点,具体的说明,我在代码上标注出来
  相关的文件tooltip。directive。ts内容如下:import{ApplicationRef,全局性调用检测ComponentFactoryResolver,创建组件对象ComponentRef,组件实例的关联和指引,指向ComponentFactory创建的元素Directive,ElementRef,EmbeddedViewRef,EmbeddedViewRef继承于ViewRef,用于表示模板元素中定义的UI元素。HostListener,DOM事件监听Injector,依赖注入Input}import{TooltipComponent}from。tooltiptooltip。Directive({selector:〔appTooltip〕})exportclassTooltipDirective{Input(appTooltip)appTooltip!:privatecomponentRef!:ComponentRefTooltipC获取目标元素的相关位置,比如left,right,top,bottomgetelementPosition(){returnthis。elementRef。nativeElement。getBoundingClientRect();}constructor(protectedelementRef:ElementRef,protectedappRef:ApplicationRef,protectedcomponentFactoryResolver:ComponentFactoryResolver,protectedinjector:Injector){}创建tooltipprotectedcreateTooltip(){this。componentRefthis。componentFactoryResolver。resolveComponentFactory(TooltipComponent)绑定tooltip组件。create(this。injector);this。componentRef。instance。data{绑定data数据content:this。appTooltip,element:this。elementRef。nativeElement,elementPosition:this。elementPosition}this。appRef。attachView(this。componentRef。hostView);添加视图constdomElem(this。componentRef。hostViewasEmbeddedViewRef)。rootNodes〔0〕asHTMLEdocument。body。appendChild(domElem);}删除tooltipprotecteddestroyTooltip(){if(this。componentRef){this。appRef。detachView(this。componentRef。hostView);移除视图this。componentRef。destroy();}}监听鼠标移入HostListener(mouseover)OnEnter(){this。createTooltip();}监听鼠标移出HostListener(mouseout)OnOut(){this。destroyTooltip();}}复制代码
  到这里,已经完成了99的功能了,下面我们在页面上调用即可。页面上调用
  我们在userlist。component。html上添加下面的内容:pstylemargintop:100!〔appTooltip〕HelloJimmy是重点span〔appTooltip〕HelloJimmystylemarginleft:200width:160textalign:padding:20px0;display:border:1pxsolid999;Jimmyspan复制代码
  TooltipDirective这个指令我们已经在app。module。ts上进行声明,我们直接调用即可。目前的效果如下:
  我们实现的tooltip是底部居中展示,也就是我们平常使用框架,比如angularantdesign中tooltip的bottom属性。对于其他属性,读者感兴趣的话,可以进行扩展。
  至此,我们可以很好的维护自己编写的指令文件了。
  【完】
投诉 评论

A股后面很可能只有两种选择,要么大跌,要么长期下跌大家还记得我上周给大家说过的空头的做空方法,还有几个人能把空头做空的步骤说一下,如果有人记不住的话,那么我就再说一次,空头的做空套路就是先下跌,再假反弹,然后再大幅下跌。……海港队赢了,中场还是乱,缺一个攻防枢纽,海港队需加快引援速度恩迪亚耶属于强力前锋,能突能抢,头球出色。抢点能力是真强,深圳防守球员基本扛不住。俯身冲顶这一下干净利落,就是手臂碰球了,分辨也没用,太明显。他属于那种黑又硬的外援……炒猪肉时,先放盐还是先放酱油?一步错步步错,猪肉腥柴发硬如果你也喜欢美食,点击关注,每天不断更新精彩内容!导语:炒猪肉时,先放盐还是先放酱油?一步错步步错,猪肉腥柴发硬!一说到猪肉,相信大家在日常生活中也是非常熟悉的,平……1993年北京首次申奥,却以两票之差输给悉尼,多年后黑幕被揭中国首次申奥胜算极大,最终却反转输给悉尼,两票之差令人意难平,是实力不足还是中间有人在捣鬼?读者朋友们,还记得著名的奥运三问吗?中国运动员什么时候能参加奥运会?……明天周三,五大极具爆发潜力板块及个股猜想,建议收藏研究1、光伏储能芯能科技、中天科技、春兴精工、瑞和股份、横店东磁、天合光能、拓日新能首选:芯能科技现价14。27,总市值166亿备注:由于欧洲能源价格飙升,……杜锋的固执和素养决定了这支队伍的高度,胡明轩的表现让球迷失望胡明轩这次的表现真的是让所有球迷都不能接受的,以后杜锋再也不要带他出去国家队比赛了,孙铭辉也要好好总结一下自己的失误是什么原因导致的!总的来说这次输了给黎巴队才三分球、最后几分……10月13日收评继续放量上涨继续放量上涨!!!!昨天神秘力量发力,大盘时隔两天之后重回3000点,今天其实也是多空争夺激烈的一天,北上截止下午2点,流出超80亿,大盘内资和主力今天还是比较给力的,继……MyBatisSpringMyBatis与Spring整合前言mybatisspring的官网地址:https:github。commybatisspringdemo项目地址:https:gitee。comshuashua……Angular自定义指令Tooltip头条创作挑战赛本文同步本人掘金平台的文章:https:juejin。cnpost7082241253819023397一起养成写作习惯!这是我参与掘金日新计划4月更……早财经丨银保监会回应停贷事件,超15家银行密集发声河南村镇银每经编辑:张杨运,张喜威NO。17月14日,李克强主持召开经济形势专家和企业家座谈会强调,着力巩固经济恢复基础,推动经济尽快回归正常轨道保持运行在合理区间。稳经济一揽子政……儿童节铁道兵幼儿园儿童节:铁道兵幼儿园梅梓祥2017060123:44一hr今天是六一儿童节。我在写《铁道兵大院的前世今生》系列文章时,机关的同志建议我写文工团、大路画展、报纸……原地结婚吧!杨洋合作的荧幕CP我只磕他和迪丽热巴杨洋在2010年因李少红导演的《红楼梦》出演贾宝玉踏入影视圈,出道已经十多年,杨洋作为一个颜值与实力齐飞的实力派演员,与娱乐圈中的很多女演员都合作过,其中很多都是颜值非常高的当……
乌克兰美女如云,为何当地的中国人却不愿娶,知情人道出其中厉害内蒙古天骄天骏度假区,充满了原生态,有众多好看好玩的娱乐体验厘米级定位北斗版广汽新能源埃安V上线FindX5Pro首发用户有话说屏幕影像是重点,心率检测功能教你一招!如何用技术实现时序羽毛球动作预测1500手机大推荐(新)(更多手机推荐)APP开发费用分析iOS16莫着急升级!无法退出AppleID的bug出现哈登179,米切尔368,大帝2113!但今天最佳是塔图姆,欢迎回家!毒蛇队核心重回休斯顿,现身火箭训练场,金色球鞋抢镜一加联合创始人携新机来袭Nothing首款手机曝光女人上了年纪,还是穿阔腿裤更耐看,记住3个法则,优雅又时髦双盲造句用双盲造句大全澳网0横扫米尔曼连续6年进32强男人厌倦女人从不耐烦开始,女人厌倦男人从这几方面开始你,温暖了我的视线高中作文夸克理财怎么样国外旅游保险只能在国内买吗火焰南天竺秋雨其一2020年国家科技奖揭晓医学领域名单孕前健康排毒的六种食物小班数学有趣的糖果手机传播色情信息违法吗

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利