2017-08-04 46 views
2

我有一个组件HeroLogoComponent在我的应用程序的每个页面的标题元素中使用。它在app.module声明:我在应用程序的每个页面上都有一个组件。我如何声明它,以便它可以在全球范围内使用?

@NgModule({ 
    declarations: [ 
    MyApp, 
    HeroLogoComponent, 
], ... 

从阅读angular.io文件,据我所知,这应该允许选择<hero-logo>在所有其他PageComponent使用。然而,当我把它添加到任何其他网页,我得到的错误

Error: Uncaught (in promise): Error: Template parse errors: 'logo' is not a known element

当我改变PageComponentModule包括schemas: [CUSTOM_ELEMENTS_SCHEMA]应用程序加载,但在HTML组件仅显示为空

<hero-logo><hero-logo> 

里面没有模板元素。我宁愿声明/导入这个组件,以便在整个应用程序中使用,而不是在每个PageComponentModule中使用。有没有办法做到这一点,以便它可以被全球引用?

谢谢!

编辑:

所以在app.module.ts,引导是IonicApp,因为它是一种离子生成项目。

bootstrap: [IonicApp], 

在bootstrap中声明的组件全局可用吗?如果是这样,我将如何从IonicApp申报?

+0

声明它在'home'组件 – Aravind

+0

我应该声明组件本身在HomePageModule宣言或声明模块该模块的进口? –

回答

4

有了下面这段代码中,HeroLogoComponent将提供给相同声明数组内声明的每一个组件。

@NgModule({ 
    declarations: [ 
    MyApp, 
    HeroLogoComponent, 
], ... 

如果您有多个角模块,并希望它可以访问到每一个角模块中的每一个部件,把它放在一个共享的模块中为阿拉汶建议。然后确保将共享模块导入到您定义的每个需要它的组件的每个Angular模块中。

要了解更多信息,检查了这一点:https://www.youtube.com/watch?v=ntJ-P-Cvo7o&t=6s

+1

谢谢! YouTube视频帮助解决了这个问题,并了解了ngModules应该如何相互交互。如果你偶然发现这个问题,A ++肯定会检查出来,它会为你节省大量时间! –

1

有它的共享模块中

@NgModule({ 
    declarations: [ 
    MyApp, 
    HeroLogoComponent, 
    ], 
    exports: [ 
     HeroLogoComponent, 
    ] 

导入SharedModule各个不同的模块

+0

好吧,我已经声明并从HeroLogoComponentModule导出。将它提供给页面的唯一方法是将其导入到该页面的@NgModule中? –

相关问题