【Angular】[Debugging] NullInjectorError: No provider for {Class}!

问题现象:控制台报错(NullInjectorError)

一句话总结:你想要用某个类A的功能,并将它在constructor实例化了,但是Angularinjector列表中没有找到这个A类,所以不知道怎么提供这个类。

解决方式:

在类A头上添加Injectable装饰符,并配置好providedIn等相关参数。或者在模块的ngModule装饰符的providers数组中添加A类,如果是类A来自第三方,则是在模块的ngModule装饰符的imports数组中添加该类所在的模块。

方式一:Injectable

方式二:providers

方式三:imports,仅针对三方引入

解释:

任何类想要被引用(在constructor中实例化),都需要在Angularinjector列表注册,注册方式之一就是使用Injectable装饰符,也是官方推荐方式;另一种就是在模块的providers中注明。两种方式都可以配置作用域,使类在不同的作用域生效。

injector列表:


配置不同作用域:

参考:[Debugging] NullInjectorError: No provider for {Class}!

posted @ 2023-12-25 19:18  unuliha  阅读(42)  评论(0编辑  收藏  举报