有一个多项目应用程序。
第一个子项目:
@NgModule({
declarations: [
AppComponent,
AComponent,
],
imports: [
BrowserModule,
AngularMaterialModule,
ReactiveFormsModule
],
providers: providers,
exports: [
AComponent
],
bootstrap: [AppComponent]
})
export class AppModule { }
@NgModule({})
export class ComponentASharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AppModule
};
}
}
第二个子项目:
@NgModule({
declarations: [
AppComponent,
BComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
TranslateModule,
],
exports: [BComponent],
providers: providers,
bootstrap: [AppComponent]
})
export class AppModule {
}
@NgModule({})
export class ComponentBSharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AppModule,
providers: providers
};
}
}
我想创建一个第三个子项目,我想在其中显示 AComponent 和 BComponent。如果我这样做:
@NgModule({
declarations: [
AppComponent,
AComponent,
BComponent
],
imports: [
BrowserModule,
AppRoutingModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
@NgModule({})
export class ComponentCSharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AppModule
};
}
}
然后我得到一个错误,AComponent 和 BComponent 在多个 Angular 模块中声明:AppModule 和 AppModule。
请告诉我,是否可以这样做或者是否应该将这两个组件移到主模块中?
我们需要导入模块,而不是组件。组件必须在其各自的模块中声明才能使它们可用。
组件CSharedModule.ts
AComponent 和 BComponent 组件现在在 ComponentCSharedModule 中可用