是否可以跨多个项目共享角度组件?
Posted
技术标签:
【中文标题】是否可以跨多个项目共享角度组件?【英文标题】:Is it possible to share angular component across multiple projects? 【发布时间】:2018-08-18 11:52:04 【问题描述】:我是 Angular 新手,刚刚开始学习。我有一种情况,我喜欢在多个项目中使用相同的组件。
假设我有一个CustomerComponent
,它执行 CRUD 操作。
现在我想在项目A和项目B中使用CustomerComponent
。原因是如果我必须修改CustomerComponent
,我只能在一个地方修改而不是多个项目。
是否可以创建这样的组件?
如果可能的话,请指导我如何完成这项工作。
提前致谢。
【问题讨论】:
项目是否在相同的 angular-cli 配置下?我的意思是,您是否在单个项目中提供多个应用程序? 我也有类似 Bunyamin 的问题。我想将核心模块保存在共享文件夹中并将模块导入当前项目。这是您导入核心角度模块的一种方式。比如 import CommonModule from '@angular/common'; 是的,您可以这样做,有一些方法。告诉我一些关于你的项目的信息。您的应用是在同一个文件夹下还是在完全不同的地方? 看看这个:***.com/questions/45575372/… 应用程序将位于不同的文件夹中。让我们考虑这种方式。您正在构建两个不同的应用程序,例如订单管理 (OM) 和应收帐款 (AR) 应用程序。这两个应用程序彼此独立。您不能允许同一个人同时访问这两个应用程序。但是您必须允许用户在两个应用程序中执行 CRUD 操作。因此,我想使用具有 CRUD 功能的相同客户组件。如果客户组件发生了某些变化,您只需在一处进行更改,并在两个应用程序中反映这些更改。谢谢 【参考方案1】:是的。这绝对是可能的。您应该通过创建一个单独的模块来做到这一点,该模块将在其上注册该组件。然后您可以从该模块中导出该组件,并将该模块导入您要使用该组件的项目的应用模块中。
比如说,你有一个核心模块,像这样:
@NgModule(
declarations: [CustomerComponent],
exports: [CustomerComponent],
)
export class CoreModule
在这里,我们声明了一个名为 CustomerComponent
的组件,并且我们还从该 CoreModule
导出了它
所以现在,如果说您有两个不同的项目,以 AppModule 作为其根模块,在这两个项目中,您必须导入这个 CoreModule
。像这样的:
@NgModule(
imports: [CoreModule],
)
export class AppModule
完成此操作后,CoreModule 将注册为模块,然后可以在您的 AppModule 中使用其导出的功能。
【讨论】:
【参考方案2】:当然,实际上鼓励通过模块共享组件:
在此处查看更多信息:https://angular.io/guide/sharing-ngmodules
此外,如果您想共享服务,因为它们是作为单例实现的,这有点不同。
编辑(18 年 12 月 12 日) 这是一个关于单例服务的链接:https://angular.io/guide/singleton-services
用例很重要,但为了清楚起见,您可以在上面阅读。谢谢!
【讨论】:
你能指出一些共享单例服务的参考吗?我认为可能对完整性震动有用 也要注意这一点,如果您打算在多个应用程序之间共享模块,请考虑使用自定义库:github.com/angular/angular-cli/issues/11168 @netalex 已添加。以上是关于是否可以跨多个项目共享角度组件?的主要内容,如果未能解决你的问题,请参考以下文章
跨多个 docker-compose 项目的共享卷 [重复]
是否可以设置一个跨多个 ASP.NET MVC 项目使用的基础项目?