2

我想为所有其他模块(路由中的子模块)全局使用 UI 框架。

我正在使用最新版本的 Angular 和 Material (7.2+)。https://material.angular.io/

我创建了一个导入所有 Angular Material UI 模块的 Angular 模块。进口在app.module.ts. 在我通过加载另一个模块更改路线之前,它工作正常。- 我知道为什么。因为每个模块都是一个单独的范围。但是应该可以全局导入一个模块,每个组件都可以访问 UI (html)。

我想将所有 Mat..Modules 导入app.module.ts(已经完成)对于我的其他模块(如 DashboardModule)也可访问。目前,我必须将 MaterialModules 再次导入每个模块组件(页面)。我确定/希望这是可能的。因为整个页面都应该可以全局访问 UI。

4

2 回答 2

1

我认为这种愿望是不可能的。模块的全部意义在于封装它们的内容,并且只通过导出来公开特定的内容。另一方面,如果你想使用由另一个模块导出的东西,你必须导入它。没有“全球进口”

于 2019-02-16T04:00:32.177 回答
0

这不是 Angular 模块的工作方式。

注意:此方法无效,如果找到解决方案将更新答案

但是有一种解决方法,创建自己的装饰器来包装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

于 2019-02-16T07:08:26.803 回答