【发布时间】:2018-05-30 03:21:30
【问题描述】:
在将 Angular 5 更新到 Angular 6 后,我遇到了一些关于 rxjs6 的问题:
TypeError: this.http.post(...).map is not a function
error TS2339: Property 'map' does not exist on type 'Observable<Object>'.
TypeError: rxjs__WEBPACK_IMPORTED_MODULE_1__.Observable.of is not a function
我尝试了一些方法,例如:
将此导入添加到 service.ts
从 'rxjs/operators' 导入 { map };
更改 http.post().pipe(map(res => {...}))
但是,所有这些都不适合我。
我的环境如下:
"@angular/cli": "^6.0.3"
"rxjs": "^6.2.0"
"rxjs-compat": "^6.2.0"
代码如下所示 服务.ts
import { Injectable } from '@angular/core';
import {environment} from '../../environments/environment';
import {HttpClient} from '@angular/common/http';
import {StorageService} from '../services/storage.service';
@Injectable()
export class VariationService {
ip = environment.url.management;
constructor(private http: HttpClient,
private storageService: StorageService) { }
getFlowChart(status?) {
status = status ? status : '';
let token = this.storageService.getToken('token');
return this.http.post(
`${this.ip}/workflow`,
{
'access_token': token,
'type': 'adjustment_workflow_get',
'data': {
'status': status
}
}
).map((res: Response) => {
if ( res['errcode'] !== '00000') {
return [];
}
return res['datas'];
});
}
}
另一个问题的打字稿文件
import {Injectable} from '@angular/core';
import { PreloadingStrategy, Route } from '@angular/router';
import { Observable } from 'rxjs';
@Injectable()
export class SelectivePreloadingStrategy implements PreloadingStrategy {
preloadedModules: string[] = [];
preload(route: Route, load: () => Observable<any>): Observable<any> {
if (route.data && route.data['preload']) {
this.preloadedModules.push(route.path);
return load();
} else {
return Observable.of(null);
}
}
}
【问题讨论】:
-
如果您可以在 jsfiddle 中重现错误,那么您将更有可能得到答案。
-
好的,我会再次使用jsfiddle。
-
“不适合我”意味着他们都给出相同的错误信息?
-
@Henry 没错,将 import { map } from 'rxjs/operators' 添加到 service.ts,终端不打印错误,但是,IDE 仍然显示错误 'map 'map' does not exist在类型 'Observable
-
Angular6 不需要地图操作符来处理 API 数据
标签: angular rxjs angular6 rxjs6