Angular 模块导入的范围是什么

pri*_*ime 5 angular

如果我有三个模块

  1. 应用程序模块
  2. 共享模块
  3. 项目模块

在 SharedModule 内部,我有一个 PaginatorComponent,导出如下:

共享模块.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { PaginatorComponent } from './paginator/paginator.component';

@NgModule({
  imports: [
      CommonModule
  ],
  declarations: [
      PaginatorComponent
  ],
  providers: [],
  exports: [
      PaginatorComponent
  ]
})
export class SharedModule { }
Run Code Online (Sandbox Code Playgroud)

然后,我使用以下行将共享模块导入到我的 AppModule 中

应用程序模块.ts

import { SharedModule } from './shared/shared.module';

imports: [
      ...
      SharedModule,
      ...
Run Code Online (Sandbox Code Playgroud)

问题; 我的第三个“ItemModule”应该自动访问 PaginatorComponent 还是需要直接导入到第三个模块中?目前我得到了一般错误的变体:

Can't bind to 'totalItems' since it isn't a known property of 'app-paginator'.
1. If 'app-paginator' is an Angular component and it has 'totalItems' input, then verify that it is part of this module.
Run Code Online (Sandbox Code Playgroud)

非常感谢。

Deb*_*ppe 5

这是我开始 Angular 2+ 时误解的事情/

您需要重新导入每个模块中使用的每个组件。

以您的示例为例,如果您需要使用PaginatorComponent到您的 中ItemModule,则需要导入SharedModule到您的 中ItemModule才能使其正常工作。(因为 SharedModule 导出 PaginatorComponent)

服务/提供商的情况并非如此。如果您注入服务,每个子组件都将能够访问它。