Ionic3 问题记录

1.Ionic3 启动没问题,编译的时候报错


events.js:136thrower;// Unhandled 'error' event^Error: read ECONNRESET

at _errnoException (util.js:999:13)

at TCP.onread (net.js:629:25)

解决办法,删除node_modules/ws目录,然后在项目目录启动命令行,输入

npm install [email protected]

2.ionic3 懒加载机制问题

Ionic3的懒加载机制会带来一个问题,就是所有的页面在第一次进来没有加载,只有在你点击进入某个页面,它的module才会加载,这个过程会有几秒钟的时间(加载自己module的过程),
在浏览器上测试的时候没有这个问题(可能计算机的处理速度比手机要快),在真机上会给人一种我点击了之后没有反应的感觉,用户体验不好。
这个问题的解决办法就是:把这些需要第一次进来就加载的module在app.module里面import进来。

3.使用@IonicPage后,路由传递的参数在页面消失后获取不到

  正常页面使用push('***',{'taskId':this.params.taskId}),
  this.params.taskId = this.navParams.get('taskId');  //可以获取到

  但是也没刷新或者自动部署的时候,
  this.params.taskId = this.navParams.get('taskId');   //undefined

   原因,没有配置@IonicPage的segment属性
   添加segment: 'taskdetail/:taskId' 即可

4.关于ionic3的生命钩子在NavController中的表现

只说在路由中的push()和pop()的情况

  
  ionViewDidLoad(){
    console.log('A')
  }
  ionViewDidEnter(){
    console.log('B')
  }
  ionViewWillEnter(){
    console.log('C')
  }
  push()
  全部都会触发,// A,B,C
  
  pop()
  ionViewDidLoad不触发  //B,C

  因此如果使用pop()返回页面时需要刷新页面数据,则不能在ionViewDidLoad调用API,

  ionViewDidLoad 不会出现渲染问题
  ionViewWillEnter 会出现一点点渲染闪屏问题

5 文件上传字节流转换后打包过程报类型不符合

   
    let _file: File = event.target.files[0];
    let reader = new FileReader();
    reader.readAsDataURL(_file);
    reader.onload = (e)=>{
      let obj : any = e.target.result;   
      $('#triggerImg').attr("src", obj);
    };


    question:Property 'result' does not exist on type 'EventTarget'.

因为readAsDataURL会将图片转换成base64码,再通过FileReader对象的onload方法返回回来
但是TyrScript编译器不知道你正在返回一个什么类型的东西,
e.target默认为EventTarget类型,但是result为string类型,因此会报错。
解决办法:  let obj : any = (e.target as any).result;   

6.Cannot find module 'typescript' or Cannot find module 'fs-extra'
首先npm i 更新一遍再试试,不行就只能删除node_modules,重新npm i 一遍,再不行就是cli版本的问题了,需要重新安装一遍了

7.Error: The Angular AoT build failed. See the issues above
检查代码

8.IOS防止页面露底
在ionic3下,有时候滑动页面到最顶或者最底的时候,放开手指,然后马上再滑动,就好出现滑动没有效果的情况,有时候还会出现页面渲染的BUG,这其实是IOS的露底问题。

可以度娘搜索"防止微信浏览器下拉出现网址"解决,但是假如页面有ion-refresher标签,是没办法解决的,因为body标签被ionic定位成fixed的了,ion-refresher是基于body的fixed属性实现的

你可能感兴趣的:(Ionic3 问题记录)