溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ng-zorro-antd@0.7.1 修復(fù)月份選擇bug

發(fā)布時(shí)間:2020-07-20 11:13:48 來(lái)源:網(wǎng)絡(luò) 閱讀:314 作者:youthfighter 欄目:web開發(fā)

背景

公司開發(fā)框架使用的是angular5,為了提高開發(fā)效率,將ng-zorro-antd庫(kù)引入項(xiàng)目。在開發(fā)過(guò)程中,發(fā)現(xiàn)該庫(kù)的月份選擇有問(wèn)題(ng-zorro官網(wǎng)可復(fù)現(xiàn)),具體表現(xiàn)如下:

ng-zorro-antd@0.7.1 修復(fù)月份選擇bug

由上圖可以看出,月份選擇出現(xiàn)了兩個(gè)三月、兩個(gè)五月、兩個(gè)十二月。這個(gè)bug不僅出現(xiàn)在月份選擇,即便是日期選擇,也可以先選月份,依然會(huì)存在這個(gè)bug。

bug產(chǎn)生的原因

翻看了ng-zorro-antd的源碼,發(fā)現(xiàn)是生成月份列表的時(shí)候,月份計(jì)算錯(cuò)誤。相關(guān)代碼如下圖:

ng-zorro-antd@0.7.1 修復(fù)月份選擇bug

開發(fā)者的想法應(yīng)該是,通過(guò)setMonth()來(lái)依次獲取每個(gè)月份的時(shí)間。而問(wèn)題恰恰出在這里。如果當(dāng)前是Wed Jul 31 2019 18:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間),那么生成一月份的數(shù)據(jù)(setMonth(0))沒有問(wèn)題,是Thu Jan 31 2019 18:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間),但是生成二月份的數(shù)據(jù)(setMonth(1))的時(shí)候回出問(wèn)題,由于2月份只有28天,因此,代碼的執(zhí)行結(jié)果是Sun Mar 03 2019 18:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間),實(shí)際上已經(jīng)是三月份了。

也就是說(shuō),每個(gè)月的29、30、31號(hào),月份選擇控件可以穩(wěn)定的復(fù)現(xiàn)該bug。

解決bug

在node_modules下找到ng-zorro-antd文件夾,打開其下的ems5文件夾下的antd.js文件,修改14387、14388及14423行相關(guān)的代碼。如下圖所示:

ng-zorro-antd@0.7.1 修復(fù)月份選擇bug

ng-zorro-antd@0.7.1 修復(fù)月份選擇bug

重啟項(xiàng)目可解決該bug。


在最新版本的ng-zorro-antd@8.1.2中,該bug已解決。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI