Angular 尝试使用forRoot()为延迟加载的组件延迟加载与角度材质相关的自定义模块不会';行不通
我有一个lazyloading模块设置,通过角度布线,我使用Angular 尝试使用forRoot()为延迟加载的组件延迟加载与角度材质相关的自定义模块不会';行不通,angular,angular-material,lazy-loading,angular-routing,ng-modules,Angular,Angular Material,Lazy Loading,Angular Routing,Ng Modules,我有一个lazyloading模块设置,通过角度布线,我使用角度材质包渲染数据。根据建议,我已经为名为MaterialModule(使用forRoot方法)的所有材料组件制作了一个自定义模块,我将其导入app module中作为forRoot:MaterialModule.forRoot(),,但是,在我的延迟加载组件/模块中,除非我也在所有延迟加载模块中显式导入它,否则此MaterialModule不可用 app-module.ts imports: [ BrowserModule, AppR
角度材质
包渲染数据。根据建议,我已经为名为MaterialModule
(使用forRoot
方法)的所有材料组件制作了一个自定义模块,我将其导入app module
中作为forRoot:MaterialModule.forRoot(),
,但是,在我的延迟加载组件/模块中,除非我也在所有延迟加载模块中显式导入它,否则此MaterialModule
不可用
app-module.ts
imports: [
BrowserModule,
AppRoutingModule,
MaterialModule.forRoot(),
CoreModule]
=============
material-module.ts
export class MaterialModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: MaterialModule
}
}
}
是否有一种方法可以使共享模块(如此MaterialModule)在angular中的所有延迟加载模块中可用。这里没有错。只有当模块的声明在模块中导出,并且模块在您想要使用它们的另一个模块中导入时,才可用,只有提供者中的内容才会在整个应用程序中共享 使用forRoot创建一个模块只是一种约定,用于初始化一次,或者构建一个单例模式 但是如果你想使用这个模块中的东西,你必须在你需要的每个模块中导入它,当然没有forRoot 这就是范围,提供者有一个全局范围,这意味着它随处可见。声明具有私有范围,这意味着它们仅在当前模块内可见。如果您想在其他地方使用它们,您需要在它们自己的模块中导出它们,并在另一个模块中导入该模块以使用它们 这是一篇关于ngModules的文章,它对ngModules进行了更详细的解释:
当谈到延迟加载时,它是相同的,只是延迟加载模块的提供程序只有在模块加载后才可用。为什么要使用
forRoot()
?创建简单模块并在应用程序中导入-module@ashishpal当前位置我之前就做过。但是它似乎不适用于惰性加载模式。。