前言
不知道大家在做項(xiàng)目的時(shí)候诞外,會(huì)不會(huì)使用較多的條件判斷(*ngIf)來(lái)選擇性的渲染和顯示元素或者相關(guān)的信息。最近在做Angular2的項(xiàng)目時(shí)灾票,就遇到兩次因?yàn)槭褂胣gIf來(lái)選擇渲染顯示而使得ts的代碼中峡谊,找不到想要找的DOM元素。
所以自己總結(jié)了一下:如果當(dāng)我們?cè)谶x擇顯示的模塊中,需要ts代碼去進(jìn)行編寫該模塊實(shí)現(xiàn)差異化顯示(比如:要獲取對(duì)應(yīng)的DOM元素進(jìn)行不同的樣式渲染顯示既们,或者獲取該元素的寬度和高度)濒析,這時(shí)候就會(huì)出現(xiàn)問(wèn)題:
1、獲取不到DOM元素
2啥纸、 自然也獲取不到DOM元素的高度和寬度
原因:
1号杏、ts的執(zhí)行速度比HTML模塊的渲染速度快
2、使用了ngIf是的該元素壓根都找不到
解決方案:
1斯棒、把ngIf改成了class.hidden盾致,也能實(shí)現(xiàn)選擇性的渲染元素和信息,這時(shí)候可以找到該DOM元素荣暮,但是在獲取高度的時(shí)候庭惜,還是沒(méi)有成功,是因?yàn)樵诖藭r(shí)穗酥,對(duì)應(yīng)的信息還是渲染和計(jì)算护赊,所有沒(méi)有高度。
2砾跃、啟用了一次性定時(shí)器進(jìn)行延時(shí)了ts中獲取該DOM的高度和增加不同樣式的代碼部分骏啰。
當(dāng)然了,感覺(jué)也不是最佳方案抽高,希望大神們給與更好的方案判耕;因?yàn)轫?xiàng)目的代碼不能上傳的原因,這次總結(jié)可能不是描述的很好翘骂,就當(dāng)是自己的小總結(jié)壁熄。