這是一個型別腳本檔案,我試圖從另一個服務的 observable 實作身份驗證保護,但這個煩人的錯誤不斷彈出
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;
})
)
}
}
在此處輸入影像描述
uj5u.com熱心網友回復:
如果沒有,您map將回傳。undefineduser
您需要為每種情況回傳一個值:
map((user) =>{
return user !== null && user !== undefined;
})
uj5u.com熱心網友回復:
好吧,問題是你只有map在用戶真實的時候才會回傳一些東西。您也應該回傳另一種情況。嘗試這個:
canActivate(): Observable<boolean> {
return this.accountsService.currentUser$.pipe(
map((user) => !!user)
);
}
uj5u.com熱心網友回復:
如果條件失敗,函式回傳默認值,即未定義,但你的函式應該回傳布林值
canActivate(): Observable<boolean> {
return this.accountsService.currentUser$.pipe(map(Boolean));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/508373.html
