我的应用程序的每一页上都使用一个组件。我如何声明它以便在全球范围内使用?

cjs*_*cjs 3 ionic-framework ionic2 ionic3 angular

我有一个组件 HeroLogoComponent,它在我的应用程序的每个页面的标题元素中使用。它在 app.module 中声明为:

@NgModule({
  declarations: [
  MyApp,
  HeroLogoComponent,
], ...
Run Code Online (Sandbox Code Playgroud)

通过阅读 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>
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

编辑:

因此,在 app.module.ts 中,引导程序是 IonicApp,因为它是 ionic 生成的项目。

bootstrap: [IonicApp],
Run Code Online (Sandbox Code Playgroud)

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

Deb*_*ahK 5

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

@NgModule({
  declarations: [
  MyApp,
  HeroLogoComponent,
], ...
Run Code Online (Sandbox Code Playgroud)

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

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