Токены, предоставляемые лениво загруженными модулями, недоступны в глобальном масштабе; то есть они доступны только в том же модуле, в котором они предоставляются.
Чтобы обойти это, вы можете внедрить static forRoot(): ModuleWithProviders
в свой функциональный модуль и импортировать его в свой корневой модуль. Это в основном позволяет вашему функциональному модулю предоставлять некоторые токены в корне, которые будут доступны глобально, а остальная часть модуля будет загружаться лениво.
Вот пример лениво загруженного функционального модуля, который предоставляет 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 { }
Надеюсь, это поможет.