重用具有不同配置的相同 NgModule

Reusing the same NgModule with different config

我想构建一个通用模块,我可以通过一些配置来自定义它。例如,在根模块中我想有类似

的东西
@NgModule({
    imports: [
        moduleFactory(config1),
        moduleFactory(config2),
        moduleFactory(config3)
    ],
})
export class AppModule { }

moduleFactory 将 return 一个包含基于 configx 对象构建的路由的模块。这些模块将提供一些视图,这些视图将显示基于配置对象的自定义内容。我该怎么做?

我想出了一个使用 loadChildren 的解决方案。在主要路线配置中,我有这样的东西:

{
    path:'companies',
    loadChildren: 'app/admin/admin.module#AdminModule',
    data:{
        // the config1
    }
},

{
    path:'users',
    loadChildren: 'app/admin/admin.module#AdminModule',
    data:{
        // the config2
    }
}

然后,在 AdminModule 我可以阅读 data 属性。此外,我试图在 AdminModule 路由中定义绝对路由路径,但现在,使用 loadChildren 解决方案,我可以定义相对路径,因此我可以静态定义路由并且 AOT 可以正常工作:) .我在 AdminModule 路线中有这样的东西:

{
    path: '',
    component: TablePageComponent,
},
{
    path: 'item',
    component: FormPageComponent,
}

这样,我可以使用路由 /users 加载用户 table 并使用路由 /users/item;id=1 加载特定用户。这同样适用于公司和其他任何事物。