类型 'Observable<true | undefined>' 不能分配给类型"<boolean>在角度身份验证实现上可观察"



这是一个类型脚本文件,我试图从另一个服务的可观察对象实现身份验证保护,但这个烦人的错误不断出现在中

import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree, } from '@angular/router';
import { ToastrService } from 'ngx-toastr';
import { map, Observable } from 'rxjs';
import { AccountsService } from 'src/Services/Accounts.service';
@Injectable({
providedIn: 'root'
})
export class AuthGuard implements CanActivate {
constructor(private accountsService: AccountsService, private toastr: ToastrService, private router: Router) {}

canActivate(): Observable<boolean> {
return this.accountsService.currentUser$.pipe(
map((user) =>{
if(user) return true;
})
)  
}
}

在此处输入图像描述

如果没有user,您的map将返回undefined

您需要为每种情况返回一个值:

map((user) =>{
return user !== null && user !== undefined;
})

问题是,只有当用户是真实的时,才从map返回一些东西。你也应该回来接另一个案子。试试这个:

canActivate(): Observable<boolean> {
return this.accountsService.currentUser$.pipe(
map((user) => !!user)
);
}

如果条件失败,函数将返回默认值,即未定义,但函数应返回布尔

canActivate(): Observable<boolean> {
return this.accountsService.currentUser$.pipe(map(Boolean));
}

相关内容

最新更新