在多个项目之间共享Angular组件是否可能?

5
我刚开始学习Angular,对此比较陌生。我有这样一个情况:我想要在多个项目中使用相同的组件。
例如,我有一个"CustomerComponent",它可以执行CRUD操作。
现在,我想要在A和B两个项目中使用"CustomerComponent"。原因是,如果我需要修改"CustomerComponent",我只需要在一个地方修改,而不是多个项目中都要修改。
是否可能创建这样一个组件?
如果可能,请指导我如何实现。
提前感谢。

这些项目是否在同一个angular-cli配置下?我的意思是,您是否在单个项目中提供多个应用程序? - Bunyamin Coskuner
我有和Bunyamin类似的问题。我想把核心模块放在一个共享文件夹中,并将该模块导入到当前项目中。这有点像你导入核心Angular模块的方式。例如:import { CommonModule } from '@angular/common'; - Alomoni
可以的,有几种方法。告诉我一下你的项目情况。你的应用程序是在同一个文件夹下还是完全不同的位置? - Bunyamin Coskuner
看一下这个链接:https://dev59.com/yFcO5IYBdhLWcg3wkij2 - Bunyamin Coskuner
1
应用程序将位于不同的文件夹中。让我们这样考虑。您正在构建两个不同的应用程序,例如订单管理(OM)和应收账款(AR)应用程序。这两个应用程序彼此独立。您不能允许同一人访问这两个应用程序。但是您必须允许用户在两个应用程序中进行CRUD操作。因此,我想使用相同的客户组件,其中具有CRUD功能。如果客户组件有所更改,则只需更改一个地方即可在两个应用程序中反映更改。 谢谢 - Alomoni
2个回答

5

是的,这绝对是可能的。您可以通过创建一个单独的模块来实现此组件的注册。然后,您可以从该模块中导出此组件,并将该模块导入到您想要使用此组件的项目的应用程序模块中。

例如,假设您有一个核心模块,类似于以下内容:

@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
此外,如果您想要共享服务,因为它们被实现为单例,所以需要有所不同。
编辑(2018年12月12日):以下链接讨论了单例服务:https://angular.io/guide/singleton-services
具体情况需要根据使用情况而定,但您可以在上面的链接中了解更多信息。谢谢!

你能指出一些共享单例服务的参考资料吗?我认为这对完整性很有用。 - netalex
请注意此事,并在打算在多个应用程序之间共享模块的情况下考虑使用自定义库:https://github.com/angular/angular-cli/issues/11168 - netalex
1
@netalex 已添加。 - Nico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接