延迟加载模块提供的令牌在全局范围内不可访问;也就是说,它们仅在提供它们的同一模块中可用。
要绕过此问题,您可以实现
static forRoot(): ModuleWithProviders
并将其导入根模块。这基本上允许您的功能模块在根目录中提供一些令牌,以便全局可用,而模块的其余部分将被延迟加载。
下面是一个延迟加载功能模块的示例,该模块向全局范围提供注入令牌:
@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 { }
希望这有帮助。