gpt4 book ai didi

angular - 将 rxjs 升级到 6 后,类型 'map' 上不存在属性 'Observable'

转载 作者:行者123 更新时间:2023-12-01 22:27:21 30 4
gpt4 key购买 nike

我按照 https://update.angular.io 中的说明将我的 Angular 应用程序从版本 5.2 升级到 6.0 。

现在,由于“rxjs-5-to-6-migrate”迁移,我的 Angular 应用程序无法构建:

ERROR in bla.ts: error TS2339: Property 'map' does not exist on type 'Observable'.

我有以下导入:

import { Observable } from 'rxjs/observable';
import { of } from 'rxjs/observable/of';
import { map } from 'rxjs/operators';

如果我像这样更改导入,它会起作用:

import { Observable } from 'rxjs/observable';
import 'rxjs/Rx';

但我不明白为什么......我想使用显式导入而不是导入所有运算符。

<小时/>

更新:正如一些答案指出的那样,我必须使用管道才能使用运算符。这是我的问题,因为我认为我仍然可以将运算符链接到可观察量。

旧样式:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

this.http.get('/api/appsettings/get').map(data => { return true; }).catch(() => { return Observable.of(false); });

新风格

import { of,  Observable } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

this.http.get('/api/appsettings/get').pipe(map(data => { return true; }), catchError(() => { return of(false); }));

最佳答案

您需要在 Observable 上使用 pipe 方法并在内部传递 map 函数,例如:

import { of } from 'rxjs';
import { map } from 'rxjs/operators';

of([1,2,3]).pipe(
map(i => i*2)
);

关于angular - 将 rxjs 升级到 6 后,类型 'map' 上不存在属性 'Observable',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50412389/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com