我对如何导入共享模块在角度2中使用并寻找一些说明有点困惑。
因此,当我使用导入的组件和模块创建一个SharedModule类时,我也将其导出以便重用。我将SharedModule导入到我的app.module中,因此:1。它将在应用程序加载时出现。 2.所以我不必在其他功能模块中导入它。
我注意到即使我在我的app.module中导入但是当我运行我的应用程序时,我得到的错误信息是我缺少组件或模块的引用。所以我最终导入了所有功能模块中的共享模块。我想把它放在app.module中,我不会在其他模块中导入它吗?
答案 0 :(得分:2)
我想把它放在app.module中,我不会在其他模块中导入它吗?
不,导入AppModule
的任何模块都不可用于AppModule
导入的任何其他模块。如果您希望某个功能模块可以使用SharedModule's
导出的管道/组件/指令,则必须明确地将SharedModule
导入该功能模块。这样做的好处是,您将所有导出的组件都放在 ONE 模块中,因此即使您必须将SharedModule
导入10个功能模块,您也只需要制作1导入,而不是在这10个功能模块中单独导入每个组件/指令/管道等。
如需进一步参考,请查看official docs。
答案 1 :(得分:-1)
如果共享组件具有组件,管道和指令,则需要将共享模块导入需要它的每个功能模块。作为上述要点的例外,您必须在以下方案中导入App模块中的共享模块:
使用延迟加载,并在不同的功能模块之间共享服务,并且需要在功能模块之间创建和共享该服务的单个实例。
import { ModuleWithProviders } from '@angular/core';
import { SampleService } from './services/sample';
@NgModule({
declarations: [],
imports: [],
exports: []
})
export class SharedComponentsModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedComponentsModule,
providers: [SampleService]
};
}}
//Import the module with Provider in AppModule :
Imports: [
SharedComponentsModule.forRoot()
]