L1g*_*ira 5 import export angular-module angular angular-library
我创建了一个 Angular 库。在我的库中,我希望通过在其中包含功能模块来使其变得干净:
例子:
Library
NavigationModule
NavigationSideBarComponent
NavigationTopComponent
Navigation Service
etc
GraphModule
BarGraphComponent
PieGraphComponent
Run Code Online (Sandbox Code Playgroud)
我的导航模块目前如下所示:
@NgModule({
declarations: [
NavigationSidebarComponent
],
imports: [
CommonModule,
MatSidenavModule
],
exports: [
NavigationSidebarComponent
]
})
export class NavigationModule { }
Run Code Online (Sandbox Code Playgroud)
我的图书馆模块目前如下所示:
@NgModule({
declarations: [LibraryComponent],
imports: [
NavigationModule
],
exports: [
LibraryComponent
//NavigationSidebarComponent <-- Did not work
]
})
export class LibraryModule { }
Run Code Online (Sandbox Code Playgroud)
我发现的大多数教程都使用一个仅包含组件的库,而没有其他内容,例如模块。我发现使用库中的模块的教程没有显示如何导出片段。
本质上,我想将此库导入到任何应用程序中,并能够NavigationSidebarComponent
从库或服务中的模块调用或任何其他组件。
我将继续调查此事。
我认为你根本不需要顶级“库模块”。查看源树@angular/material
:我认为他们曾经有 amaterial.module
并摆脱了它,现在根只有一个完全空的index.ts
。每个组件都有自己的模块,并且像MatAutocomplete 那样的模块会导入它们所依赖的模块(例如MatOptionModule
)并重新导出它们。
我一直在将我的一个项目转换为类似的模型,并进行研究以找出模块结构的当前最佳实践。我相信 Material 从“整体库”方法转换而来,鼓励您为import { MatAutocompleteModule } from "@angular/material"
每个组件(或一组相关组件)一个模块,因为这种方法允许您将库作为单个包分发,但仍然受益于树 -晃动,因此只有实际使用的模块才会包含在您的构建中。