我创建 DynamicForm 组件将其连接到两个NgModule中。
// Module 1
@NgModule({
imports: [],
exports: [],
declarations: [
DynamicForm
],
providers: []
})
// Module 2
@NgModule({
imports: [],
exports: [],
declarations: [
DynamicForm
],
providers: []
})
但是项目不起作用,任何错误。当我从其中一个NgModule中删除 DynamicForm 时,我需要包含此组件。此外,我尝试将 DynamicForm 连接到 app.module 并从NgModule中删除,但也无法正常工作。
怎么办?
答案 0 :(得分:3)
组件只能是一个模块的一部分。因此,如果您有一个应该由多个模块使用的组件,请创建一个共享模块,在那里声明它,然后导出以便其他人可以使用它。然后将该共享模块导入到您需要该组件的模块中
@NgModule({
declarations: [
DynamicForm
],
exports: [
DynamicForm
]
})
export class SharedModule {}
@NgModule({
imports: [ SharedModule ]
})
class ModuleThatNeedsDynamicForm {}
答案 1 :(得分:0)
扩展用户:@peeskillet回答
在两个不同模块中声明组件的两种方法:
根据@peeskillet的回答,创建一个共享模块并在那里声明您的组件(以及任何其他共享组件),然后在另一个模块中导入共享模块,在该模块中您要将共享组件用作依赖性。
为依赖组件本身创建一个单独的模块,并将组件模块导入另一个要将共享组件用作依赖关系的模块中。这样做的好处是,您只需导入所需内容而不是共享模块中的其他组件。
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MyComponent } from './my.component'; @NgModule({ imports: [ CommonModule ], exports: [MyComponent], declarations: [MyComponent] }) export class MyComponentModule { }