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

ear*_*Dev 11 typescript ionic-framework ng-modules angular ionic4

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

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 { }
Run Code Online (Sandbox Code Playgroud)

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

 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 {}


Run Code Online (Sandbox Code Playgroud)

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

import { AddtimeComponent } from '../../timemodule/time.module'
Run Code Online (Sandbox Code Playgroud)

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

小智 10

您不需要在主模块中导入 AddtimeComponent。您必须将其导出到 SharedModule 中,如下所示。

import { AddtimeComponent } from './addtime/addtime.component';
export { AddtimeComponent } from './addtime/addtime.component';
Run Code Online (Sandbox Code Playgroud)

NgModule 装饰器中的 export 属性和 header 中的 export 是不同的。NgModule 中的 export 属性用于 Angular 编译器,而 header 中的 export 用于 Typescript 编译器。

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


Rus*_*lez 3

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

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

@NgModule({
  imports: [
    ...
    SharedModule
  ]
})
Run Code Online (Sandbox Code Playgroud)

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

已编辑>>

由于您正在尝试在模块的构建过程中引导组件。那么您可能需要使用 EntryComponent 来使组件本身从加载的模块的引导程序中提供。

在代码中查看:

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

@NgModule({
  imports: [
    ...
    SharedModule
  ]
})
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请查看:https://codinglatte.com/posts/angular/entry-components-angular/