我想为所有其他模块(路由的子模块)全局使用UI框架。
我正在使用最新版本的Angular and Material(7.2+)。 https://material.angular.io/
我创建了一个Angular模块,该模块可以导入所有Angular Material UI模块。
已导入app.module.ts
。直到我通过加载另一个模块来更改路由之前,它都可以正常工作。 - 我知道为什么。因为每个模块都是单独的作用域。
但是应该可以全局导入模块,每个组件都可以访问UI(html)。
我想导入app.module.ts
中的所有Mat..Modules(已完成),也可以访问其他模块(例如DashboardModule)。
当前,我必须再次将MaterialModules导入每个模块组件(页面)。
我肯定/希望这是可能的。因为UI应该可以全局访问整个页面。
答案 0 :(得分:0)
我认为没有希望是不可能的。模块的重点是封装它们的内容,并且仅通过导出公开特定的内容。另一面是,如果要使用另一个模块导出的内容,则必须导入它。没有“全局导入”
答案 1 :(得分:0)
那不是Angular模块的工作原理。
注意:此方法不起作用,如果找到解决方案,则会更新答案
但是有一种解决方法,创建自己的Decorator来包装NgModule
装饰器,并在声明其他模块时使用它。
这里是一个例子:
function CustomeNgModule(options: NgModule){
options.imports = options.imports || [];
options.imports.push(SharedModule);
return NgModule(options);
}
并将其用作
@CustomeNgModule({/*options*/})
export class AbcModule {
}
我还没有测试我的代码,但是它应该可以工作,如果没有,请告诉我。
如果需要有关装饰https://www.typescriptlang.org/docs/handbook/decorators.html的更多信息