使用ngx-cookie-service触发NG0203错误,求解决方法
问题定位
从错误栈能看出,问题出在ngx-cookie-service的实例创建流程中,inject()调用不在合法的注入上下文内。结合你的代码分析,核心原因是重复提供CookieService:你既在AppModule的providers数组里全局注册了该服务,又在LoginComponent的@Component元数据里再次添加providers: [CookieService],这会导致Angular在组件层级尝试重新创建服务实例时,触发注入上下文冲突。
解决方案
1. 移除组件级的CookieService注册
修改login.component.ts,删除@Component中的providers配置项:
@Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.scss'] // 删除此行:providers: [CookieService] })
你已经在AppModule里全局注册了CookieService,组件可直接通过构造函数注入全局实例,无需重复注册。
2. 确保ngx-cookie-service与Angular版本兼容
如果上述操作后问题仍存在,检查版本适配性:
- 执行
npm list ngx-cookie-service查看当前版本 - 若版本过低,运行
npm install ngx-cookie-service@latest更新到最新兼容版本
3. 确认注入逻辑合法性
确保LoginComponent的构造函数注入方式正确(你的代码已符合要求,此步用于排查其他潜在非法注入):
constructor( private authService: AuthService, public cookieService: CookieService, private router: Router ) { // ... }
验证修改
完成上述操作后重启项目,导航到Login组件,检查错误是否消失。
内容的提问来源于stack exchange,提问作者Yataai
相关产品推荐
相关产品推荐

