我有一个组件,用于我的应用程序的每个页面。如何声明它以便全局使用?

时间:2017-08-04 20:02:33

标签: angular ionic-framework ionic2 ionic3

我有一个组件HeroLogoComponent,它在我的应用程序的每个页面的header元素中使用。它在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],

引导程序中声明的组件是否全局可用?如果是这样,我将如何从IonicApp声明它?

2 个答案:

答案 0 :(得分:4)

使用下面的代码,HeroLogoComponent将可用于相同声明数组中声明的每个组件。

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

如果您有多个Angular模块并希望每个Angular模块中的每个组件都可以访问它,请将其放在Aravind推荐的共享模块中。然后确保将共享模块导入到您定义的每个具有需要它的组件的Angular模块中。

要了解更多信息,请查看以下内容:https://www.youtube.com/watch?v=ntJ-P-Cvo7o&t=6s

答案 1 :(得分:1)

将它放在共享模块中

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

在不同模块中导入SharedModule