angular2 填坑笔记

一、angular2 ng build --prod 报错: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 报错: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:
1
  • 2、在此组件所在的module中添加:
angular2 填坑笔记_第1张图片
2
四、Can't have multiple template bindings on one element. Use only one attribute named 'template' or prefixed with * ("
      
  • ]*ngIf="!isCopy">
    • 指令ngFor和ngIf不要写在同一个标签上。
    五、有时候引入第三方组件时有些样式无法修改,此时可以试试以下两步:
    • 1、引入ViewEncapsulation
    1
    • 2、添加encapsulation: ViewEncapsulation.None
    angular2 填坑笔记_第2张图片
    2
    六、ng2生命周期钩子不能写成箭头函数的形式,否则不响应。
    七、关于html标签原有属性的赋值有两种形式:
    • 1、通常赋常量值
    常规形式

    注意:红框内的“selectAll”是常量值。

    • 2、给属性赋变量值,有以下两种形式
      • ①、给变量值套上‘{{}}’,如下图红框中所示:
    变量形式一
    • ②、给属性加上‘[]’,如下图红框中所示:
    变量形式二

    注意:红框中的dItem.indexId是变量值。

    八、[(ngModel)]属性影响input默认选中
    • 1、一般情况下,我们默认让某个input(radio或checkbox)选中时,只需在input中加checked即可,如下图:
    通常情况下
    • 2、下面这种情况下checked是不起作用的,即input默认是未选中的,解决办法把ngModel属性删掉就可以了:
    错误形式
    九、打包前运行正常,打包后用eclipse起项目运行报错:AllComponent_Host.html:1 ERROR TypeError: Cannot read property 'parentDepId' of undefined。
    • 从报错信息我们可以看到是因为有属性未定义,但打包前的代码运行是正常的,这是什么原因呢?
    • 这个情况比较特殊,先看导致错误前后的代码:
    错误代码
    更正后的代码
    • 注意:

      • 1、上面两图代码的区别,只是slice方法的参数不同而已;
      • 2、第一张图的代码在开发环境是运行正常的,打包后在eclipse中起项目是错误的;
      • 3、问题原因:两种环境下window.location.pathname的值不同,所以截取的字符串出错了,更正后的代码即可解决这个问题。
    • 结论:这个问题如果在开发时遇到并不难解决,但难的是构建后和构建前不一致时的定位。

    十、cnpm代替npm安装包后npm run build:prod容易出现的问题(npm和cnpm混用导致的)(mac中使用cnpm无问题,和系统也有关系):
    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),如下图
    我在当前项目用的版本

    注意:项目中的node_modules文件夹中的代码如果混用了npm install和cnpm install时会出现类似的问题!
    建议:在npm install之前把node和ng的全局版本都更新到最新,本地ng版本也更新到最新版本;

    你可能感兴趣的:(angular2 填坑笔记)