Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 与角度模块共享组件_Angular - Fatal编程技术网

Angular 与角度模块共享组件

Angular 与角度模块共享组件,angular,Angular,我想在不同的模块中使用一些组件。目前,我的模块化系统结构如下 app.modules.shared 页脚模块 管理模块 剖面模块 现在需要创建一个组件,例如InputControlComponent,我可以在AdministrationModule的组件以及ProfileModule中使用它 我的第一个想法是 app.modules.shared 页脚模块 管理模块 剖面模块 共享模块 共享模块 app.module.ts 但是找不到我的InputControlComponent 看来你

我想在不同的模块中使用一些组件。目前,我的模块化系统结构如下

  • app.modules.shared
    • 页脚模块
    • 管理模块
    • 剖面模块
  • 现在需要创建一个组件,例如InputControlComponent,我可以在AdministrationModule的组件以及ProfileModule中使用它

    我的第一个想法是

  • app.modules.shared
    • 页脚模块
    • 管理模块
    • 剖面模块
    • 共享模块
  • 共享模块 app.module.ts
    但是找不到我的InputControlComponent

    看来你的方向是正确的,在这篇文章的末尾找到链接,验证你的逻辑。整个逻辑应该是:- 我们不能通过在所有模块中导入组件来将组件共享到不同的模块,因为Angular 2不允许我们将单个组件导入到不同的模块,如果您尝试这样做,Angular将抛出一个错误:

    Type X(component) is part of the declarations of 2 modules
    
    因此,为了解决这个问题,我们创建了一个共享模块,而不是共享一个组件,现在我们在所有其他模块中共享这个模块。为此,我们使用import语句并在所有其他模块中导入共享模块。在此之后,组件将自动共享给所有模块

    您可以在此处找到详细说明:-

    https://www.oodlestechnologies.com/blogs/How-to-share-component-to-multiple-modules-in-Angular2
    

    我会用不同的方式来划分

    在app.module级别,您可以创建“modules”文件夹,将主要组件(如管理模块或配置文件模块)放在单独的文件中

    如果您有代码块,这些代码块几乎像页眉或页脚一样随处可见,您可以创建blocks文件夹(与app.module的级别相同)并将其放在那里

    关于MyButton,我认为创建另一个名为Shared的文件并将其放在那里是一个好主意,这样您就可以方便地将其导入需要的地方

    所以基本上看起来

    • blocks=header->header.component.ts+footer->footer.component.ts(以及各种菜单组件)
    • modules=profile->profile.component.ts和所有其他连接到它的文件+ admin->admin.component.ts,与配置文件相同
    • shared=myButton和此处声明的所有可重用内容,并在shared.module中导出

    您可以在希望使用按钮组件的所有模块中轻松导入shared.module。

    是否可以发布appModule和sharedModule代码您应该为MyButton定义一个模块,如果要在profileModule中使用MyButton组件,您应该在那里注册MyButton模块。我编辑了帖子。我想我必须这样做。但是找不到InputControlComponent。我建议阅读
    Type X(component) is part of the declarations of 2 modules
    
    https://www.oodlestechnologies.com/blogs/How-to-share-component-to-multiple-modules-in-Angular2