将组件、指令和管道公开并在模块外使用
Posted
技术标签:
【中文标题】将组件、指令和管道公开并在模块外使用【英文标题】:Make component, directive and pipe public and use outside a module 【发布时间】:2018-02-04 21:07:24 【问题描述】:如何公开组件、指令和管道? 这是因为当我将它们添加到模块中的声明数组时,它们在声明它们的模块中的任何地方都可见并且是模块私有的。如果我必须在模块外使用应该怎么做。
【问题讨论】:
【参考方案1】:您可以使用 shared Module 负责分享 common components, pipes and directives
。 请注意使用sharedModule or coreModule
只是一个命名约定,但您可以使用任何其他模块名称eg xyzModule
。重要的是确保在 export array
import NgModule from '@angular/core';
import CommonModule from '@angular/common';
import CustomComponent from 'path';
import CustomPipe from 'path';
import CustomDirective from 'path';
@NgModule(
imports: [ CommonModule ],
declarations: [ CustomComponent, CustomPipe, CustomDirective],
exports: [ CustomComponent, CustomPipe, CustomDirective]
)
export class SharedModule
在应用程序/根模块或任何其他功能或像这样的延迟加载功能模块中使用它,
AppModule 或者说 ClientModule
import SharedModule from 'path'
@NgModule(
imports: [..., sharedModule]
)
【讨论】:
能否请您提一下相关项目应添加到导出数组中?此外,它不必是共享模块,我相信它可以来自任何模块的导出数组。请在您的答案中添加这些信息,以便我将其标记为答案。 是的,从逻辑上讲,您可以从any module eg. xyzModule
导出此类项目。但它是AngularTeam
给出的命名约定,所以我建议你使用sharedModule
并没有那么混乱。【参考方案2】:
只需要确保相关项目在您模块的导出行中
exports: [ CustomComponent, CustomPipe, CustomDirective]
然后实现该模块的任何其他模块都可以访问这些东西
【讨论】:
以上是关于将组件、指令和管道公开并在模块外使用的主要内容,如果未能解决你的问题,请参考以下文章