一、angular2 ng build --prod 報(bào)錯(cuò):Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
- 原因: angular-cli 版本低疹鳄。
- 解決辦法一:
- 1牵舱、 rm -rf node_modules/
- 2扔役、 npm install --save-dev @angular/cli@latest
- 3、 npm install
- 解決辦法二:
- 配置中--prod 改為 --env=prod
二、npm start 報(bào)錯(cuò):Error: Cannot find module 'lodash'
- 1绿满、 rm -rf node_modules/
- 2、 npm install
三窟扑、Can't bind to 'ngModel' since it isn't a known property of 'input'.
- 1喇颁、在此組件所在的module中引入FormsModule:
- 2漏健、在此組件所在的module中添加:
四、Can't have multiple template bindings on one element. Use only one attribute named 'template' or prefixed with * ("
<li class="item chkitem" *ngFor="let dItem of deptList" [ERROR ->]*ngIf="!isCopy">
- 指令ngFor和ngIf不要寫(xiě)在同一個(gè)標(biāo)簽上橘霎。
五蔫浆、有時(shí)候引入第三方組件時(shí)有些樣式無(wú)法修改,此時(shí)可以試試以下兩步:
- 1姐叁、引入ViewEncapsulation
- 2瓦盛、添加encapsulation: ViewEncapsulation.None
六、ng2生命周期鉤子不能寫(xiě)成箭頭函數(shù)的形式外潜,否則不響應(yīng)原环。
七、關(guān)于html標(biāo)簽原有屬性的賦值有兩種形式:
- 1处窥、通常賦常量值
注意:紅框內(nèi)的“selectAll”是常量值嘱吗。
- 2、給屬性賦變量值滔驾,有以下兩種形式
- ①谒麦、給變量值套上‘{{}}’,如下圖紅框中所示:
- ②哆致、給屬性加上‘[]’绕德,如下圖紅框中所示:
注意:紅框中的dItem.indexId是變量值。
八沽瞭、[(ngModel)]屬性影響input默認(rèn)選中
- 1迁匠、一般情況下,我們默認(rèn)讓某個(gè)input(radio或checkbox)選中時(shí)驹溃,只需在input中加checked即可城丧,如下圖:
- 2、下面這種情況下checked是不起作用的豌鹤,即input默認(rèn)是未選中的亡哄,解決辦法把ngModel屬性刪掉就可以了:
九、打包前運(yùn)行正常布疙,打包后用eclipse起項(xiàng)目運(yùn)行報(bào)錯(cuò):AllComponent_Host.html:1 ERROR TypeError: Cannot read property 'parentDepId' of undefined蚊惯。
- 從報(bào)錯(cuò)信息我們可以看到是因?yàn)橛袑傩晕炊x,但打包前的代碼運(yùn)行是正常的灵临,這是什么原因呢截型?
- 這個(gè)情況比較特殊,先看導(dǎo)致錯(cuò)誤前后的代碼:
-
注意:
- 1儒溉、上面兩圖代碼的區(qū)別宦焦,只是slice方法的參數(shù)不同而已;
- 2、第一張圖的代碼在開(kāi)發(fā)環(huán)境是運(yùn)行正常的波闹,打包后在eclipse中起項(xiàng)目是錯(cuò)誤的酝豪;
- 3、問(wèn)題原因:兩種環(huán)境下window.location.pathname的值不同精堕,所以截取的字符串出錯(cuò)了孵淘,更正后的代碼即可解決這個(gè)問(wèn)題。
結(jié)論:這個(gè)問(wèn)題如果在開(kāi)發(fā)時(shí)遇到并不難解決歹篓,但難的是構(gòu)建后和構(gòu)建前不一致時(shí)的定位瘫证。
十、cnpm代替npm安裝包后npm run build:prod容易出現(xiàn)的問(wèn)題(npm和cnpm混用導(dǎo)致的)(mac中使用cnpm無(wú)問(wèn)題滋捶,和系統(tǒng)也有關(guān)系):
at Error (native)
at Object.fs.openSync (fs.js:640:18)
at Object.fs.readFileSync (fs.js:508:33)
- 解決辦法:
- 1痛悯、卸載node_modules后用npm重裝(前提是npm速度還可以);
- 2重窟、卸載node_modules后修改(降低)ng的版本载萌,再次安裝(用cnpm),如下圖
注意:項(xiàng)目中的node_modules文件夾中的代碼如果混用了npm install和cnpm install時(shí)會(huì)出現(xiàn)類(lèi)似的問(wèn)題巡扇!
建議:在npm install之前把node和ng的全局版本都更新到最新扭仁,本地ng版本也更新到最新版本;