angular5 升级到 angular7 步骤

一般情况下按照官网升级指南 update.angular.io 能够完成,但有些细节总是报错,这里记录一下。

一、升级步骤

1. 移除node_modules文件夹、package-lock.json或yarn.lock.

2. 升级angular cli。ng5的cli是没有ng update命令的,必须升级到ng6以上才能执行

npm install -g @angular/cli
npm install @angular/cli

3. 升级cli相关配置。 完成后 .angular-cli.json 会被转换成 angular.json.

ng update @angular/cli

4. 升级 angular 核心模块.

ng update @angular/core

5. 一般情况下,由于angular和rxjs的升级,你安装的其他插件都需要升级版本,你可以选择按需升级,或者干脆直接全部升级 ng update --all。

6. 修改项目内rxjs的语法。可以通过 rxjs-tslint 进行自动修改,也可以自己手动改,或者安装rxjs-compat 兼容当前代码。

npm install -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json

二、rxjs6的变化

1. import 方式改变

import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';    // 创建方法,类型,调度程序和工具库
import { map, filter, scan } from 'rxjs/operators';  // 操作符
import { webSocket } from 'rxjs/webSocket';          // webSocket
import { ajax } from 'rxjs/ajax';                    // ajax
import { TestScheduler } from 'rxjs/testing';        // 测试工具

2. 链式操作变为管道操作

source.pipe(
  map(x => x + x),
  mergeMap(n => of(n + 1, n + 2).pipe(
    filter(x => x % 1 == 0),
    scan((acc, x) => acc + x, 0),
  )),
  catchError(err => of('error found')),
).subscribe(printResult);

3. 使用函数而不是类

fromEvent(window, 'resize').pipe(             // 不再使用 Observable.fromEvent
      debounceTime(100)
    ).subscribe(() => myChart.resize());

4. 某些方法名的变化

如 do => tap, catch => catchError, switch => switchAll, finally => finalize, throw => throwError

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值