当前位置: 首页 > 知识库问答 >
问题:

为什么我会得到这个错误?属性“Map”在类型“Observable”上不存在

吕向荣
2023-03-14

我正在开发一个Angular应用程序,实现一个AuthGuard类,以避免未登录的用户访问受保护的页面。下面是我做的一个在线课程:

import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';

import { AuthService } from './auth.service';
import 'rxjs/Rx';
import 'rxjs/add/operator/map'
import { Observable } from 'rxjs';

export class AuthGuard implements CanActivate {

  constructor(private authService: AuthService,
              private router:Router) {}

  canActivate(route: ActivatedRouteSnapshot,
                     state: RouterStateSnapshot): Observable<boolean>  {

    return this.authService.authInfo$
                           .map(authInfo => authInfo.isLoggedIn())
                           .take(1)
                           .do(allowed => {
                             if(!allowed) {
                               this.router.navigate(['/login']);

                             }
                           })
  }

}

在我的AuthService类中,我简单地定义了这个属性:

authInfo$:Observable<boolean>;
.map(authInfo => authInfo.isLoggedIn())

怎么啦?我错过了什么?如何解决此问题?

共有1个答案

壤驷彦
2023-03-14

您应该添加pipe.pipe(map()...)

this.authService.authInfo$
                          .pipe(
                           map(authInfo => authInfo.isLoggedIn()),
                           take(1),
                           do(allowed => {
                             if(!allowed) {
                               this.router.navigate(['/login']);

                             }
                           })
                          ) // pipe ends
 类似资料: