Angular5升级至6后调用translate.get报错Observable不存在subscribe属性
解决方案
根因说明
Angular 6 默认依赖RxJS 6版本,和Angular 5配套的RxJS 5版本存在不兼容的破坏性变更,同时你用到的@ngx-translate国际化库也需要匹配Angular版本才不会出现类型异常。
分步修复步骤
- 第一步:匹配依赖版本
Angular 6 需要对应使用@ngx-translate/core@10.x、@ngx-translate/http-loader@3.x版本,RxJS版本需要在6.x范围内。如果你的依赖版本不匹配,执行以下命令重装:
如果你暂时不想修改现有RxJS相关的旧代码,可以安装兼容包直接适配旧语法:npm uninstall @ngx-translate/core @ngx-translate/http-loader npm install @ngx-translate/core@10 @ngx-translate/http-loader@3 --savenpm install rxjs-compat@6 --save - 第二步:修正导入语句
确保所有RxJS相关导入都用新版语法,移除之前的深层导入和操作符补全导入:// 正确导入Observable import { Observable } from 'rxjs'; // 正确导入TranslateService import { TranslateService } from '@ngx-translate/core'; - 第三步:修正代码写法
你的代码里String是JavaScript字符串包装对象,TypeScript中普通字符串类型用小写string即可,也可以通过类型断言规避类型报错:(this.translate.get('newtest.testsimulation') as Observable<string>).subscribe((res: string) => { pageLabel = res; });
内容的提问来源于stack exchange,提问作者Bhushan Khaladkar
相关产品推荐
相关产品推荐

