无法解析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
“无法解析服务的所有参数:(?)”当我尝试在 Angular 10 中使用库中的服务时