首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular服务providedIn:从库导入的根抛出NullInjectorError

Angular服务的providedIn属性用于指定服务的提供者。当使用providedIn: 'root'时,服务将被注册为根注入器的提供者,可以在整个应用程序中的任何地方使用。当使用providedIn: 'any'时,服务将被注册为每个模块的提供者,可以在该模块及其子模块中使用。

NullInjectorError是Angular框架中的一个错误类型,表示注入器无法解析所请求的依赖项。当使用providedIn: 'root'时,如果在根注入器中找不到该服务的提供者,就会抛出NullInjectorError错误。

解决NullInjectorError错误的方法是确保服务已正确注册为提供者。可以通过在服务的@Injectable装饰器中设置providedIn属性为'root'来注册服务为根注入器的提供者。另外,还可以在模块的providers数组中显式地将服务添加为提供者。

以下是一个示例代码:

代码语言:txt
复制
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class MyService {
  // 服务的实现代码
}

在上述示例中,MyService被注册为根注入器的提供者,可以在整个应用程序中的任何地方使用。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动推送服务(信鸽):https://cloud.tencent.com/product/tpns
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(TBC):https://cloud.tencent.com/product/tbc
  • 腾讯云游戏引擎(GSE):https://cloud.tencent.com/product/gse

请注意,以上链接仅供参考,具体选择产品时需根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular 6+依赖注入使用指南:providedIn与providers对比

即使它被多个模块providers: []重复申明,它也不会重新创建实例。注入器只会创建一个实例,这是因为它们最终都会注册到级注入器。...然后,组件需要导入该模块,这将导致所有(可能大量)服务导入进该组件,即使我们只想使用其中一个服务。...现在,providedIn: 'root'解决了这个问题,我们不需要在模块中导入这些服务,我们要做仅仅是使用它们。...最佳实践 当处理开发、实用程序或任何其他形式可重用 Angular 逻辑时,providedIn: 'root'是非常好解决方案。...懒加载模块 使用 providedIn: LazyServicesModule,然后由 LazyModule 导入,再由 Angular 路由器惰性加载,以实施严格模块边界和可维护架构!

2.7K11

Angular Provider 作用域

providedIn: 'root', }) export class UserService { } 示例中 providedIn 属性值 root 表示服务作用域范围是级作用域(AppModule...当你注册级别的服务时,Angular 会创建一个单独共享服务实例。如果在 @Injectable 元数据中注册服务Angular 会在构建阶段自动剔除无用服务,进而优化我们应用程序。...因此当我们在跟模块中配置某个服务后,这个服务将在整个应用程序中可用。需要注意是在非懒加载特性模块中,如果我们也注册了同一个服务。在模块和特性模块中是使用同一个服务实例,即服务是单例。...此外,当我们导入两个模块中,共用同一个 Token 来配置 provider, 后面导入模块将会生效。...当在懒加载模块中使用模块外服务时,它将使用注入器创建服务实例。但如果已经在懒加载模块中注册了 provider,在模块内获取对应服务时,它将从模块子注入器中获取对应服务实例。

1.8K20

Angular 服务

注意,这个新服务导入Angular  Injectable 符号,并且给这个服务类添加了 @Injectable() 装饰器。...默认情况下,Angular CLI 命令 ng generate service 会通过给 @Injectable 装饰器添加元数据形式,用注入器将你服务注册成为提供商。...root',}) @ Injectable ({ providedIn: 'root', }) 当你在顶层提供该服务时,Angular 就会为 HeroService 创建一个单一、共享实例,...这节课,你将使用 RxJS  of() 函数来模拟服务器返回数据。 打开 HeroService 文件,并从 RxJS 中导入 Observable 和 of 符号。...你在注入器中把 HeroService 注册为该服务提供商,以便在别处可以注入它。 你使用 Angular 依赖注入机制把它注入到了组件中。

3.3K70

augular 英雄之旅

像一组html集合,可与用户交互,可复用, 创建好项目的src目录下有个app目录,这是整个程序组件 app.component.ts— 组件类代码,这是用 TypeScript 写。...核心中导出 Component符号,它是一个装饰器工厂,为组件提供需要元数据,cli自动生成三个元数据 用于为该被装饰组件指定 Angular 所需元数据。...2.CLI自动在app.Module.ts中自动导入HeroesCompent(就是cli刚刚生成heroes.component.ts中类) 添加属性 在class中增加属性即可 import...创建服务模块 ng generate service hero 自动生成service文件,大概是说将会把服务注入到组件中 import { Injectable } from '@angular/...core'; @Injectable({ providedIn: 'root' }) export class HeroService { constructor() { } } rxjs中获取

1.7K20

Angular 入坑到挖坑 - HTTP 请求概览

对应官方文档地址: Angular HttpClient 配套代码地址:angular-practice/src/http-guide 二、Contents Angular 入坑到弃坑 - Angular...使用入门 Angular 入坑到挖坑 - 组件食用指南 Angular 入坑到挖坑 - 表单控件概览 Angular 入坑到挖坑 - HTTP 请求概览 三、Knowledge Graph ?...在使用之前,首先需要在应用模块中,引入 HttpClientModule 模块,并添加到 imports 数组中 import { BrowserModule } from '@angular/platform-browser...constructor(private services: AntiMotivationalQuotesServicesService) { } ngOnInit(): void { } } 4.1.2、服务端获取数据...,在发送请求时会按照我们添加顺序进行执行,而在接受到请求响应时,则是按照反过来顺序进行执行 获取到导出拦截器信息,就可以在模块中去导入需要注册拦截器 import { BrowserModule

5.2K10

Angular进阶教程2-

Angular在启动程序时会启动一个模块,并加载它所依赖其他模块,此时会生成一个全局注入器,由该注入器创建依赖注入对象在整个应用程序级别可见,并共享一个实例。...在服务类中注入服务 // 这种注入方式,会告诉Angular注入器中注册这个服务,这也是使用CLI生成服务时默认方式. // 这种方式注册,不需要再@NgModule装饰器中写providers,...推荐使用此种方式注册服务. @Injectable({ providedIn: 'root' }) 复制代码 在组件还是在子组件中进行服务注入,该怎么选择呢?...使用HttpClient 一般会在模块下导入HttpClient import { NgModule } from '@angular/core'; import { BrowserModule }...RxJS实战介绍 什么是RxJS 首先RxJS是一个,是针对异步数据流\color{#0abb3c}{异步数据流}异步数据流编程工具,当然Angular引入RxJS就是让异步更加简单,更加可控,在开始

4.1K30

Angular依赖注入详解

一、依赖注入基础 1.1 依赖注入概念 依赖注入基本思想是:将组件所依赖服务提供者注入进来,而不是在组件内部直接创建。...二、Angular依赖注入 Angular有自己依赖注入框架,可以自动解析组件依赖关系,避免了直接在组件中使用new一个服务紧耦合方式。...@Injectable作用有: 声明可注入性 启用依赖注入 设置服务作用域 AOT编译优化 @Injectable({ providedIn: 'root' // 设置为作用域 }) export...} return super.get(token, notFoundValue); // 默认行为 } } 3.2 提供商配置 @Injectable支持提供商配置: providedIn...useValue - 使用静态值作为服务实例 @Injectable({ providedIn: 'root', useClass: BetterLoggerService, // 指定实现类

19830

Angular Meta Service 详解

Meta Service 简介 为了让开发者能够方便地操作页面中 Meta 信息,Angular 为我们提供 Meta 服务。...该服务支持以下方法: addTag addTags getTag getTags updateTag removeTag removeTagElement 首先要使用 Meta 服务,我们需要从 @angular.../platform-browser 导入 Meta 类,然后利用 Angular 依赖注入机制,通过构造注入方式注入 Meta 服务: import { Injectable } from '@angular..._dom = getDOM(); // 获取DOM适配器 } } 通过观察 Injectable 装饰器 Meta 元信息,我们知道 Meta 服务将被注册在级注入器中,当首次获取 Meta 服务时...Meta(inject(DOCUMENT));// 注意这里是小写inject哦 } 接下来我们最简单 addTag() 方法开始分析。

1.2K20

使用Angular8和百度地图api开发《旅游清单》

,每个 Angular 应用都有一个模块,通常命名为 AppModule。...模块提供了用来启动应用引导机制。一个应用通常会包含很多功能模块。 组件 每个 Angular 应用都至少有一个组件,也就是组件,它会把组件树和页面中 DOM 连接起来。...class Storage {} ``` 复制代码 路由 Angular Router 模块提供了一个服务,它可以让你定义在应用各个不同状态和视图层次结构之间导航时要使用路径。...,添加旅游清单,清除清单功能,我们利用@Injectable({ providedIn: 'root' })将服务注入组件以便共享服务。...其次我们使用自己封装Storage服务来进行持久化数据存储,storage服务如下: import { Injectable } from '@angular/core'; @Injectable(

6K30

Angular核心-创建对象-HttpClient

(达内教育学习笔记)仅供学习交流 Angular核心-创建对象 Angular核心-创建对象创建对象两种方式Angular核心概念---服务和依赖注入创建服务对象步骤:使用Angular官方提供服务对象...---HttpClient Service Angular核心-创建对象 创建对象两种方式 Angular核心概念---服务和依赖注入 创建服务对象步骤: 使用Angular官方提供服务对象--...,注入给服务需要者 Angular核心概念—服务和依赖注入 Service:服务Angular认为:组件与用户交互一种对象,其中内容都应该与用户操作有关系;而与用户操作无关内容都应该剥离出去,.../core" //所有的服务对象都是“可被注入” @Injectable({ providedIn:"root" //指定当前服务对象在模块中提供-appmodule }) export...官方提供服务对象—HttpClient Service HttpClient 服务对象用于向指定URl发起异步请求,使用步骤: 1.在主模块中导入HttpClient服务所在模块 //app.module.ts

1.2K20

Angular 入坑到挖坑 - 路由守卫连连看

对应官方文档地址: 路由与导航 配套代码地址:angular-practice/src/router-combat 二、Contents Angular 入坑到弃坑 - Angular 使用入门 Angular...入坑到挖坑 - 组件食用指南 Angular 入坑到挖坑 - 表单控件概览 Angular 入坑到挖坑 - HTTP 请求概览 Angular 入坑到挖坑 - Router 路由使用入门指北...Angular 入坑到挖坑 - 路由守卫连连看 三、Knowledge Graph ?...[RouterModule.forRoot(routes)], exports: [RouterModule], }) export class AppRoutingModule { } 之后,在组件中...这里问题与配置通配路由需要放到最后原因相似,因为脚手架在帮我们将创建模块导入到 app.module.ts 中时,是添加到整个数组最后,同时因为我们已经将 crisis 模块路由配置移动到专门

3.7K30

🔥【Angular教程】路由入门

imports: [ BrowserModule, HomeRoutingModule, AppRoutingModule, ] 注:用cli创建模块会自动配置到模块...移除根模块中关于Home模块导入,使得模块完整分离 微调home-routing中home组件path配置为"" const routes: Routes = [{ path: '',...与懒加载相对预加载 angular中配置懒加载后模块加载被延迟到来使用时,但是有一些组件是需要优先加载并在使用时候可以及时运行。...angularRouter模块提供来两种预加载策略: 完全不预加载,这是默认值。惰性加载特性区仍然会按需加载。 预加载所有惰性加载特性区。...通过cli来生成一个服务用来完成我们预加载策略:ng generate service selective-preloading-strategy 将我们创建服务实现接口PreloadingStrategy

4.3K50
领券