无法解析AuthGuard的所有参数:在我的AuthGuard服务中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法解析AuthGuard的所有参数:在我的AuthGuard服务中相关的知识,希望对你有一定的参考价值。

我有一个AuthGuard.service.ts的代码如下。

import { Injectable } from '@angular/core';
import { ActivatedRoute, CanActivate } from '@angular/router';
import { userLoginService } from './userLoginService';
export class AuthGuard implements CanActivate {
    constructor(private service: userLoginService) { }
    canActivate() {
        if (this.service.IsloggedIn()) {
            return true;
        } else {
            window.alert(' You are not logged in.Please LogIn ');
            return false;
        }
    }

}

在userLoginService.ts中,我有如下代码

export class userLoginService {
    constructor() {}
    IsloggedIn(): boolean {
        return false;
    }
}

我在我的路线中注入了这个AuthGuard.service.ts,如下所示。我还在NgModule的提供者中提供了这个服务名称。

    const appRoutes: Routes = [
      { path: '', component: HomePageComponent, pathMatch: 'full' },
      { path: 'CartItems', component: CartItemsComponent, pathMatch: 'full', canActivate: [ AuthGuard ]},
    ];
@NgModule({
.
.
.
 providers: [UserInfoService , AuthGuard],
.
.
.

现在执行此代码时,我收到如下错误。

Uncaught Error: Can't resolve all parameters for AuthGuard: (?).
    at syntaxError (compiler.js:466)
    at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15547)
    at CompileMetadataResolver._getTypeMetadata (compiler.js:15382)
    at CompileMetadataResolver._getInjectableMetadata (compiler.js:15362)
    at CompileMetadataResolver.getProviderMetadata (compiler.js:15722)
    at eval (compiler.js:15633)
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver._getProvidersMetadata (compiler.js:15593)
    at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15161)
    at JitCompiler._loadModules (compiler.js:33542)

你能不能让我知道我犯了什么错误。

答案

我看到你导入Injectable但你永远不会使用它!

在您的AuthGuard.service.ts中。你应该在你的班级上面添加:@Injectable(),如:

@Injectable()
export class AuthGuard implements CanActivate {
    ...
}

以上是关于无法解析AuthGuard的所有参数:在我的AuthGuard服务中的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的错误:无法解析 CountdownComponent 的所有参数:(?)

无法使用具有来自 firebase 角色的 Angular AuthGuard

角度路由可以激活 AuthGuard 传输查询参数

“无法解析服务的所有参数:(?)”当我尝试在 Angular 10 中使用库中的服务时

在没有 AuthGuard 的路由上获取 nestjs 中的当前用户

刷新令牌时,AuthGuard 服务 canActivate 无法导航