You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 5.2升级至6.0.0遇TS2339错误:Observable无'do'属性求因

解决Angular 5.2升级到6.0.0时Observable的'do'属性不存在错误

嘿,这个问题我之前帮不少迁移Angular版本的开发者解决过,核心原因是Angular 6配套的RxJS版本升级到了6.x,这个版本对RxJS的操作符做了重大调整,具体来说:

  • 操作符重命名:RxJS 6把原来的do操作符改名为tap了,主要是为了避免和JavaScript原生的do...while循环命名冲突,让API更清晰。
  • 操作符调用方式变更:RxJS 6彻底移除了“补丁式”的操作符链式调用(比如直接.do()),所有操作符都需要通过pipe()方法来组合使用。

你的代码修改方案

把原来的代码改成下面这样:

// 首先要导入tap操作符
import { tap } from 'rxjs/operators';

// 修改后的请求代码
return this.httpClient.post<X>(`${environment.apiUrl}auth/x/`, this.abcd, httpOptions)
  .pipe(
    tap(x1 => this.subject.next(x1))
  );

额外提醒

如果你的项目里还有其他旧的RxJS操作符(比如catch、map的旧写法),也需要同步调整:

  • 所有操作符都要从rxjs/operators导入
  • 必须放在pipe()方法里调用

如果你暂时不想大规模修改代码,可以临时安装rxjs-compat包来兼容旧写法,但这只是过渡方案,建议尽早迁移到RxJS 6的标准写法哦。

内容的提问来源于stack exchange,提问作者kanchirk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:30:31