无法在 Angular 项目中使用 rxjs 的 map 运算符

Posted

技术标签:

【中文标题】无法在 Angular 项目中使用 rxjs 的 map 运算符【英文标题】:Cannot use map operator of rxjs in Angular project 【发布时间】:2019-04-28 18:35:25 【问题描述】:

我尝试在我的 Angular 项目中使用 rxjs 的 map 运算符,但出现以下错误

ERROR in src/app/core/service/session.service.ts(88,9): error TS2552: Cannot find name 'map'. Did you mean 'Map'?

我错过了什么吗?

Angular CLI 7.0.4

节点 10.13.0

rxjs 6.3.3

打字稿 3.1.6

import  Injectable  from '@angular/core';
import  CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router  from '@angular/router';
import  Observable  from 'rxjs';
import  map  from 'rxjs/operators';// This is where I import map operator
import  SessionService  from '../service/session.service';

@Injectable(
  providedIn: 'root'
)
export class AuthGuard implements CanActivate 

  constructor(private session: SessionService,
    private router: Router) 
  

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> |boolean 
    return this.session
  .checkLoginState()//Returns an Observable of Session
  .pipe(
    map(session => 
      if (!session.login) 
        this.router.navigate(['']);
      
      return session.login;
    )
   )
 

【问题讨论】:

分享你的会话服务代码? RsJX 'Map' operator is not working in Angular 6的可能重复 出于某种原因,我认为这段代码是会话服务代码。我在正确的一个中导入了地图运算符,一切正常。感谢您的支持。 【参考方案1】:

我的错误发生了,因为我忘记检查该函数的导入,VS 代码总是这样做,但有时不会。看看是不是一样的情况,加...

import  map, catchError  from 'rxjs/operators';

【讨论】:

以上是关于无法在 Angular 项目中使用 rxjs 的 map 运算符的主要内容,如果未能解决你的问题,请参考以下文章

错误:无法解析“rxjs/add/operator/map”

如何在 Angular 中使用 Jasmine 测试 RxJS switchMap?

无法从 websocket rxjs 节点 Angular 获得响应

#私藏项目实操分享# 使用 RxJs Observable 来避免 Angular 应用中的 Promise 使用

Angular项目中的Rxjs websockets

Angular/RxJS:带有可观察对象的嵌套服务调用