angular - Angular:如何在不同模块中的不同组件之间共享组件,反之亦然
问题描述
如何在不同模块中的不同组件之间共享一个组件 将不同模块中的组件与共享组件共享。
我有四个模块。模块 A 与组件 A,模块 B 与组件 B,模块 C 与组件 C,模块 D 与组件 D。模块 B、C 和 D 分别导入模块 A 以访问组件 A。但是有一个问题,组件 A需要使用它的相应组件。例如,组件 A 在被组件 B 使用时需要组件 B。
有没有办法让它工作而不使模块 B、C 和 D 每个都有自己的组件 A 的副本?
解决方案
这是一个共同的要求。这里让我稍微解释一下。
Angular 允许在一个且仅一个模块中声明一个组件。如果另一个模块需要该组件,则必须将该模块导入需要该组件的模块的导入数组中。
现在,如果组件 A在模块 A 中,组件 B在模块 B 中并且两者都需要彼此,并且您在模块B中导入模块 A ,在模块A 中导入模块 B ,那么您将陷入循环引用陷阱。
为了解决这个问题,你必须引入一个新模块,并在这个新模块中声明所有这些组件,并让这个新模块在需要这些组件的模块中导入。
假设我的这个新模块名称是LoaderSharedModule,它看起来像这样
@NgModule({
imports: [
],
declarations: [Component1, Component2, Component3],
exports: [Component1, Component2, Component3]
})
export class LoaderSharedModule { }
模块将导入此模块以开始使用 Component1,2,3.. 像这样
@NgModule({
imports: [
LoaderSharedModule
],
})
export class Module1 { }
@NgModule({
imports: [
LoaderSharedModule
],
})
export class Module2 { }
@NgModule({
imports: [
LoaderSharedModule
],
})
export class Module3 { }
谢谢。
推荐阅读
- excel - 如何将每行填充的列值提取到Excel中的另一个工作表
- flutter - 在颤振上运行构建运行程序时,出现以下错误
- php - 每当上传和解析数据时,服务器都不会提供页面 Laravel
- logstash - Logstash 从 logstash 过滤器中的 [@metadata] 获取值
- r - 在 url 上使用时,readr 的 read_csv 不呈现数据帧
- arrays - 最常出现的带有标准的文本值。模式不起作用
- python-3.x - win32 库即使已经安装也不会丢失
- php - Livewire 队列作业调度 afterRespone() 不起作用
- ios - swift 的 Google AdMob 法律要求
- java - 如何将 AWS MYSQL 实例连接到 android 应用程序(Java)