加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 18:01:30 所属栏目:安全 来源:网络整理
导读:我有一个AuthGuard.service.ts的代码如下. import { Injectable } from '@angular/core';import { ActivatedRoute,CanActivate } from '@angular/router';import { userLoginService } from './userLoginService';export class AuthGuard implements CanActi
我有一个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 {
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读