Angular 使用组件和服务创建模块
我目前正在开发一个离子3应用程序。在这种情况下,我需要一个手风琴组件,如的一个,但离子框架没有提供这样一个组件。所以我决定自己实施一个,这对我来说是一个继续学习Angular 5的好机会 为了澄清问题的上下文,您需要知道我的组件是通过以下文件树定义的:Angular 使用组件和服务创建模块,angular,typescript,ionic3,angular-components,angular5,Angular,Typescript,Ionic3,Angular Components,Angular5,我目前正在开发一个离子3应用程序。在这种情况下,我需要一个手风琴组件,如的一个,但离子框架没有提供这样一个组件。所以我决定自己实施一个,这对我来说是一个继续学习Angular 5的好机会 为了澄清问题的上下文,您需要知道我的组件是通过以下文件树定义的: components/ my-accordion/ my-accordion.component.html my-accordion.component.css my-accordion.componen
components/
my-accordion/
my-accordion.component.html
my-accordion.component.css
my-accordion.component.ts
my-accordion.service.ts
实际上,我需要一个特定的服务来允许我的组件的所有实例之间的通信。因为当我打开手风琴的一个项目时,我希望另一个项目自动关闭,一次只打开一个项目。我不知道这是否是正确的方法,但它似乎与RxJS库配合得很好
无论如何,正如你所看到的,我的手风琴的定义取决于一个组件和一个服务。没有这项服务,我的手风琴就演奏不好。问题是,我想把它放在一个模块中,我可以与其他应用程序共享,以便能够重用我的手风琴
我的第一个想法是把它放在SharedModule
中,但它明确地说:
SharedModule不应具有提供程序,原因如下
以前。也不应进口或再出口任何NGO模块
有供应商
读了之后,我的第二个想法是把我的手风琴放在核心模块中,但医生再次明确地说:
考虑使CoreModule成为一个没有
声明
因此我的问题是:如果我想在其他离子/角度应用程序中重用组件和it服务(用于同级通信),应该将其放置在何处?您不需要重新发明轮子。有一个爱奥尼亚accordio
组件,您可以在其中与爱奥尼亚3
应用程序一起使用
给你
Q:
如果需要,将组件和it服务(用于同级通信)放置在何处
我希望能够在其他离子/角度应用中重用它
A:
它有一个非常简单的答案,Ionic
。您只需使用此CLI
创建提供程序
,即可生成提供程序MyAccordion
。就是这样。谢谢你的链接。事实上,我只搜索了爱奥尼亚官方组件列表,没有任何accordion
组件。但是回到我最初的问题,我应该把这样一个与服务一起工作的组件放在哪里进行兄弟通信呢?是否有任何准则来创建一个同时包含组件和服务的模块?请参阅更新。provider
只是一种将服务作为单例注入的机制,不是吗?是的,是的。通常我们在app.module.ts
文件中声明它。我认为在这种情况下,您不应该使用服务。只需在组件中使用javascript即可。实际上,我只需使用@Input
注释,而不需要任何服务,就可以实现手风琴项目之间的通信。但根据我在Angular官方文档上读到的内容,正确的方法是创建功能模块
,并使用静态方法定义模块及其导出的提供者,以避免模块延迟加载时出现任何问题。下面的文章很好地描述了如何实现这样的功能模块
: