我有2个模块AppModule
和MyArtModule
,其中声明了一些组件。
当我尝试在ConfirmComponent
中使用GraphicsComponent
选择器时,它工作正常,但是当我试图在ConfirmComponent
中使用MyArtComponent
选择器时,它会抛出错误{{1} }
“ artifi-confirm-alert”不是已知元素:
如果'artifi-confirm-alert'是Angular组件,则请验证它是否属于此模块。
如果“ artifi-confirm-alert”是Web组件,则将“ CUSTOM_ELEMENTS_SCHEMA”添加到该组件的“ @ NgModule.schemas” 禁止显示此消息。
AppModule代码
'artifi-confirm-alert' is not a known element:
MyArtModule代码
@NgModule({
declarations: [
GraphicsComponent,
ConfirmAlertComponent
],
imports: [
BrowserModule,
MyArtModule
],
...
})
复制的问题代码-https://stackblitz.com/edit/skdroid-childmodule-in-child-component
我用@NgModule({
declarations: [
MyArtComponent,
],
imports: [
CommonModule
],
providers: [
MyArtService
],
exports: [
MyArtComponent
]
})
创建了OneModule
,并用OneComponent
创建了TwoModule
。
TwoComponent
和<app-one></app-one>
可在AppComponent中访问。
但无法访问AppOne组件中的<app-two></app-two>
。
答案 0 :(得分:2)
您正在尝试访问子模块组件中的父模块组件。创建一个共享模块并在其中添加组件。
@NgModule({
declarations: [ConfirmComponent],
exports: [ConfirmComponent],
})
export class SharedModule {
}
并将其添加到AppModule中:
@NgModule({
declarations: [
GraphicsComponent,
],
imports: [
BrowserModule,
MyArtModule,
SharedModule
],
...
})
并将其导入您的ArtModule:
@NgModule({
imports: [
CommonModule,
SharedModule
],
declarations: [ConfirmAlertComponent],
exports: [
ConfirmAlertComponent
]
})
export class MyArtModule { }
答案 1 :(得分:0)
您的ConfirmComponent和GraphicsComponent在同一个模块中!所以他们彼此认识! 但是您正在尝试将该ConfirmComponent用于另一个模块中的另一个组件(在您的情况下为MyArtModule),该模块不知道该组件是否存在!
您必须导出ConfirmComponent使其启用到所有应用程序!
在导出的AppModule数组中添加ConfirmComponent
exports: [
ConfirmComponent
]