【问题标题】:Angular Component Uses Another Component Which Uses an Imported Module - Organization?Angular 组件使用另一个使用导入模块的组件 - 组织?
【发布时间】:2020-07-24 17:40:46
【问题描述】:

我对 Angular 还是很陌生,似乎无法弄清楚如何正确组织我的代码。

我有一个名为 BudgetComponent 的页面,它属于 BudgetModule。 BudgetComponent 显示 AccordionItemComponents 的折叠式列表。我想在其他地方使用这些 Accordion 组件,这就是为什么它们是它们自己的组件类。

AccordionItemComponent 有一个 img,点击它会打开一个 MatDialogue。 MatDialogue 包含对导入模块 ngx-extended-pdf-viewer 的引用(来自在线库)。

我创建了一个 AccordionItemModule(我不是必需的/正确的)来容纳相应的组件,但是我不确定如何在我的 ngFor 中创建它的实例。

我真的很难弄清楚哪些组件应该属于哪些模块,以及如何使所有这些工作,以便另一个组件(具有它自己的模块,如预算(即计划))也可以引用 AccordionItems。我不确定我是否缺少必要的路由或导出逻辑,或者什么...

我附上了一张图表,以确保明确预期用途。

感谢您的帮助。

【问题讨论】:

  • 你需要一个普通的sharedModule。在这个sharedModule 中,您必须为您的应用程序定义任何东西,例如组件、指令、管道和您自己的模型。在sharedModule 的情况下,您必须定义或导入 1.<app-accordion-item> 2.<app-model-component> 3.<your-pdf-viewer> 并将其导出..然后在需要时只需将此sharedModule 导入所需的模块并使用在共享模块中定义的您自己的模块中的功能..

标签: angular angular-components angular-module file-structure


【解决方案1】:

你的方向是正确的。

首先,在你的AccordionItemModule 类中导出AccordionItemComponent 这样exports: [AccordionItemComponent]

其次,将AccordionItemModule 添加到您的BudgetModuleScheduleModule 类中的imports,因为您希望在其中使用AccordionItemComponent 组件。

第三,将数据从BudgetSchedule组件传递到Accordion组件,方法是将其添加到html文件中,如下所示:

<app-accordion-item [data]="accordianData"></app-accordion-item>

第四,使用@Input() data;作为类变量获取AccordionItemComponent中的数据。现在您将可以访问从BudgetSchedule 组件传递的数据。

最后,循环您的*ngFor 以在accordion-item.component.html 中获得所需的结果。

要使用Modal 组件,请将Modal 模块添加到imports 并将Modal 组件添加为entryComponents: [ModalComponent] 到您的Accordion 模块。

最后,您的 Modal 模块应该是 import ngx-pdf-viewer 所需的模块。

【讨论】:

  • 我明白了,谢谢! Modal 模块和 ngx-pdf-viewer 呢?尝试嵌套这些错误。目前 Modal 是一个 MatDialogue 类型的组件。我不确定哪个模块应该导入 ngx-pdf-viewer。我在 AccordionItemModule 中尝试过,但是模态框无法识别它?
  • 更新了我的答案。看看吧。
  • 这一切都很有道理,而且现在看起来很简单,因为你已经把它布置好了。非常感谢您的明确解释。一切都像魅力一样运作,除了一个部分。我已将 ngx-pdf-viewer 定义为我的模态模块的导入,并且模态的 html 可以识别它(编辑器中没有问题),但编译器说它不是一个可识别的组件。有什么想法吗??
  • 是否有可能打开的对话框调用的是组件,而不是模块?
  • 对我来说这似乎是一个配置问题。您是否正确配置了库?尝试再次运行npm installng build,看看它是否会给您任何错误。此外,如果它以对话框的形式打开,那么您可能必须将其添加到 ModalModule 的 entryComponents。这是我在没有看到代码的情况下能猜到的最好的。
猜你喜欢
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 2021-01-03
  • 2019-04-06
  • 2017-01-28
  • 1970-01-01
相关资源
最近更新 更多