模块在本地声明组件,但不导出

module declares component locally, but it is not exported

我已经创建了一个共享模块并在其他模块中声明并导出了我需要的组件。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DateslideComponent } from './dateslide/dateslide.component';
import { IonicModule } from '@ionic/angular';
import { TimeslideComponent } from './timeslide/timeslide.component';
import { AddtimeComponent } from './addtime/addtime.component'

@NgModule({
   declarations: [DateslideComponent, TimeslideComponent, AddtimeComponent],
   imports: [
       CommonModule,
       IonicModule
   ],
   exports: [DateslideComponent, TimeslideComponent, AddtimeComponent]
})
export class TimeModule { }

我在另一个模块中导入了共享模块。

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

import { IonicModule } from '@ionic/angular';

import { WhenPageRoutingModule } from './when-routing.module';

import { WhenPage } from './when.page'; 
import {TimeModule} from '../../timemodule/time.module';

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    IonicModule,
    WhenPageRoutingModule,
    TimeModule
  ],
  declarations: [WhenPage ]
})
export class WhenPageModule {}


在另一个模块的组件之一中,我从共享模块导入组件,但收到以下错误

import { AddtimeComponent } from '../../timemodule/time.module'

module declares component locally, but it is not exported.

您不需要再次导入该组件,只需在其他模块中导入SharedModule,您可以随意使用在SharedModule中声明&&导出的组件。

import { SharedModule } from '/path/to/SharedModule';

@NgModule({
  imports: [
    ...
    SharedModule
  ]
})

尝试在 Stackblitz 中复制此设置或共享对存储库的访问权限,以便我们调试您的问题并为您提供解决方案。

编辑>>

因为您正试图 bootstrap 在模块的构建过程中使用组件。然后可能需要使用 EntryComponent 来使组件本身从加载的模块的 bootstrap 提供。

在代码中查看:


import { SharedModule } from '/path/to/SharedModule';
import { AddtimeComponent } from '/path/to/AddtimeComponent';

@NgModule({
  imports: [
    ...
    SharedModule
  ],
 entryComponents: [
    AddtimeComponent
  ]
})

有关更多信息,请查看:https://codinglatte.com/posts/angular/entry-components-angular/

您无需在主模块中导入AddtimeComponent。您必须像下面那样在 SharedModule 中导出它。

import { AddtimeComponent } from './addtime/addtime.component';
export { AddtimeComponent } from './addtime/addtime.component';

NgModule 装饰器中的导出 属性 与 header 中的导出不同。 NgModule 中的导出 属性 用于 Angular 编译器,header 中的导出用于 Typescript 编译器。

如果你打算只使用选择器,那么在 NgModule 装饰器中提到就足够了。如果要在其他模块中导入 Typescript class,则必须在功能模块中导出 class。