前言
不知道大家在做项目的时候,会不会使用较多的条件判断(*ngIf)来选择性的渲染和显示元素或者相关的信息。最近在做Angular2的项目时,就遇到两次因为使用ngIf来选择渲染显示而使得ts的代码中,找不到想要找的DOM元素。
所以自己总结了一下:如果当我们在选择显示的模块中,需要ts代码去进行编写该模块实现差异化显示(比如:要获取对应的DOM元素进行不同的样式渲染显示,或者获取该元素的宽度和高度),这时候就会出现问题:
1、获取不到DOM元素
2、 自然也获取不到DOM元素的高度和宽度
原因:
1、ts的执行速度比HTML模块的渲染速度快
2、使用了ngIf是的该元素压根都找不到
解决方案:
1、把ngIf改成了class.hidden,也能实现选择性的渲染元素和信息,这时候可以找到该DOM元素,但是在获取高度的时候,还是没有成功,是因为在此时,对应的信息还是渲染和计算,所有没有高度。
2、启用了一次性定时器进行延时了ts中获取该DOM的高度和增加不同样式的代码部分。
当然了,感觉也不是最佳方案,希望大神们给与更好的方案;因为项目的代码不能上传的原因,这次总结可能不是描述的很好,就当是自己的小总结。
网友评论