gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:25:28 24 4
gpt4 key购买 nike

我已经为我的其余端点配置创建了注入(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com