首页 > 解决方案 > Angular 9:无法通过依赖注入创建该类,因为它没有 Angular 装饰器

问题描述

这个错误把我逼到了墙角。我有一个 authguard 服务,如此处所示。无论我做什么,编译器都会一直给我这个错误

'
Either add the @Injectable() decorator to 'AuthGuard', or configure a different provider (such as a provider with 'useFactory').

'

   @Injectable({ providedIn: 'root' })
    export class AuthGuard implements CanActivate {
constructor(private myService: MyService,
        private router: Router)}

我正在我的 app.module 中实现它

providers: [  
    AuthGuard
]
bootstrap: [AppComponent]
})
export class AppModule { }

我显然在 Authguard 类上方有可注入装饰器,但我仍然收到此错误。这只发生在我从 Angular 8 升级到 9.1 时,这是 VS Code 或编译器的某种错误吗?

标签: angular

解决方案


您正在从 2 个地方注册相同的依赖项

首先是@Injectable({ providedIn: 'root' })。您正在使用此语法向根注入器注册{ providedIn: 'root' }

其次是在您再次注册的下方,这就是您出错的原因。

providers: [  
    AuthGuard
]

只需将其从提供程序数组中删除,它就会解决您的问题。


推荐阅读