angular - 功能模块中未提供注入(inject) token

标签 angular ngrx

我已经为我的其余端点配置创建了注入(inject) token ,并且我在运行时为其提供多个值。如果 token 在 appmodule 中提供并在其工作的全局服务中使用,但是如果我尝试在功能模块中提供另一个数据并将其注入(inject)功能效果文件中,我将收到 staticinjectorerror,没有可用的提供程序。这是代码Injection-token code

最佳答案

延迟加载模块提供的 token 在全局范围内不可访问;也就是说,它们只能在提供它们的同一模块中使用。

要解决这个问题,您可以在功能模块中实现static forRoot(): ModuleWithProviders,并将其导入到根模块中。这基本上可以让您的功能模块在根中提供一些 token ,以便全局可用,而模块的其余部分则被延迟加载。

下面是一个延迟加载功能模块的示例,它向全局范围提供 InjectionToken:

@NgModule({
  ...
})
export class LazyLoadedFeatureModule {

  /**
   * Provide tokens to the global scope
   */
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: LazyLoadedFeatureModule,
      providers: [
        { provide: MY_INJECTION_TOKEN, useValue: MyInjectionValue, multi: true },
      ]
    }
  }

}

这里它被导入到根模块中:

@NgModule({
  ...
  imports: [
    LazyLoadedFeatureModule.forRoot(),
  ],
  ...
})
export class AppModule { }

希望有帮助。

关于angular - 功能模块中未提供注入(inject) token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50087543/

相关文章:

angular - ngrx - 奇怪的效果行为

javascript - 为什么使用 NGRX 而不是构造函数注入(inject)服务?

javascript - Angular 2.资源无法在html页面中加载

angular - 选择器 "ng-component"不匹配任何元素错误

html - Angular 4 - 上传 CSV

javascript - 子组件在 Angular 4 中不起作用

rxjs - 我无法获取NgRx数据来触发API调用

typescript - 具有枚举类型问题的 Ngrx 操作

angular - 无法添加属性 X,ngrx 9 更新后对象不可扩展

javascript - Angular 9 如何从 Angular 数组对象的所有数组中删除一个字段?