所以我创建了一个组件ExampleComponent,并在一个模块中声明了它,而该模块没有在app.module中列出。接下来,我想在一个模块中声明组件ExampleComponent,而该模块在app.module中列出。我该怎么做呢?如果我只是简单地声明它,那么我会得到以下错误:组件ExampleComponent**由多个NgModule声明。
abc.module.ts
import { ExampleComponent} from '../Example/Example.component';
@NgModule({
declarations: [
ExampleComponent
]
})
app.module.ts
import { NewModule} from '../new/new.component';
@NgModule({
imports: [
NewModule
declarations: [
]
})
new.module
import { ExampleComponent} from '../Example/Example.component';
@NgModule({
declarations: [
ExampleComponent
]
})
3条答案
按热度按时间jqjz2hbq1#
如果您在多个模块中使用您的组件,则意味着该组件是共享的,您需要为您的
ExampleComponent
创建一个独占模块(ExampleModule
),然后将该模块导入到您希望使用ExampleComponent
的任何位置。因此,创建示例模块:
然后将其导入到您想要使用
ExampleComponent
的位置(导入到abc module
和app module
中),如下所示:通过为您的共享组件定义单独的模块,您提供了一些封装层,您可以在其中描述和提供组件工作所需的所有依赖项,因此,在将来,所有使用者只需要导入模块本身,而不需要知道关于所有这些依赖项的任何信息。
svdrlsy42#
如果组件是在app.module.ts文件而不是模块文件中导入的,则会发生此错误。
案例研究:
我的文件夹结构如下:
错误***“组件由多个NgModule声明”***将在以下情况下发生
在app.module.ts文件中,如果您已按如下方式导入;
一月一日
为解决此问题而进行的更改
1.导出general. modul.ts中的general.component,如下图所示:
常规模块ts
1.在应用程序模块中导入通用模块
应用程序模块.ts
注意:声明中只应包含组件,所有模块应包含在导入中。
7vux5j2d3#
在
app.module.ts
文件中,您应该只导入 PackageComponent
的Module
,因为它是您的最高导入级别。在我的例子中,我给你举了下面的例子:
layout.module.ts
app.module.ts
有了这个设置,我可以完全访问我的
app.component.html
中的Component
Selector
<app-toolbar></app-toolbar>
,只是导入LayoutModule
。