Angular 库模块从模块导出组件、服务和其他
Angular Library Modules export components, services and others from module
我创建了一个 Angular 库。在我的库中,我希望它通过在其中包含功能模块来保持干净:
示例:
Library
NavigationModule
NavigationSideBarComponent
NavigationTopComponent
Navigation Service
etc
GraphModule
BarGraphComponent
PieGraphComponent
我的导航模块目前看起来像这样:
@NgModule({
declarations: [
NavigationSidebarComponent
],
imports: [
CommonModule,
MatSidenavModule
],
exports: [
NavigationSidebarComponent
]
})
export class NavigationModule { }
我的图书馆模块目前看起来像这样:
@NgModule({
declarations: [LibraryComponent],
imports: [
NavigationModule
],
exports: [
LibraryComponent
//NavigationSidebarComponent <-- Did not work
]
})
export class LibraryModule { }
我发现的大多数教程都在使用一个只有组件的库,没有其他任何东西,比如模块。我在库中找到的使用模块的教程没有展示如何导出片段。
基本上我想将此库导入任何应用程序,并能够调用 NavigationSidebarComponent
或库或服务中模块的任何其他组件。
我会继续调查这件事。
您必须在 LibraryModule
中导出 NavigationModule
,而不是 NavigationSidebarComponent
我认为您根本不需要顶级“图书馆模块”。查看 the source tree for @angular/material
: I think they used to have a material.module
and got rid of it, and now the root only has a completely empty index.ts
. Each component has its own module, and modules like the one for MatAutocomplete 它们依赖的导入模块(如 MatOptionModule
)和 re-export 它们。
我一直在将我的一个项目转换为类似的模型,并进行研究以找出模块结构的当前最佳实践。我相信 Material 从“整体库”方法转换而来,鼓励您 import { MatAutocompleteModule } from "@angular/material"
每个组件(或一组相关组件)一个模块,因为这种方法允许您将库作为单个包,但仍然受益于 tree-shaking,因此只有实际使用的模块才会包含在您的构建中。
我创建了一个 Angular 库。在我的库中,我希望它通过在其中包含功能模块来保持干净:
示例:
Library
NavigationModule
NavigationSideBarComponent
NavigationTopComponent
Navigation Service
etc
GraphModule
BarGraphComponent
PieGraphComponent
我的导航模块目前看起来像这样:
@NgModule({
declarations: [
NavigationSidebarComponent
],
imports: [
CommonModule,
MatSidenavModule
],
exports: [
NavigationSidebarComponent
]
})
export class NavigationModule { }
我的图书馆模块目前看起来像这样:
@NgModule({
declarations: [LibraryComponent],
imports: [
NavigationModule
],
exports: [
LibraryComponent
//NavigationSidebarComponent <-- Did not work
]
})
export class LibraryModule { }
我发现的大多数教程都在使用一个只有组件的库,没有其他任何东西,比如模块。我在库中找到的使用模块的教程没有展示如何导出片段。
基本上我想将此库导入任何应用程序,并能够调用 NavigationSidebarComponent
或库或服务中模块的任何其他组件。
我会继续调查这件事。
您必须在 LibraryModule
中导出 NavigationModule
,而不是 NavigationSidebarComponent
我认为您根本不需要顶级“图书馆模块”。查看 the source tree for @angular/material
: I think they used to have a material.module
and got rid of it, and now the root only has a completely empty index.ts
. Each component has its own module, and modules like the one for MatAutocomplete 它们依赖的导入模块(如 MatOptionModule
)和 re-export 它们。
我一直在将我的一个项目转换为类似的模型,并进行研究以找出模块结构的当前最佳实践。我相信 Material 从“整体库”方法转换而来,鼓励您 import { MatAutocompleteModule } from "@angular/material"
每个组件(或一组相关组件)一个模块,因为这种方法允许您将库作为单个包,但仍然受益于 tree-shaking,因此只有实际使用的模块才会包含在您的构建中。