gpt4 book ai didi

javascript - 为什么共享模块导入不会失败?

转载 作者:太空狗 更新时间:2023-10-29 18:27:23 24 4
gpt4 key购买 nike

我有一个使用 CoreModuleSharedModule 模式的小 Angular 应用程序。因为目前我的应用程序很小,我在根模块 AppModule 中导入了 SharedModule。我还有一个名为 AdminModule 的延迟加载管理模块,但它似乎无法访问共享模块,即使它已导入到根模块中。我必须再次显式导入 SharedModule 才能在管理模块的组件中使用它。为什么是这样?如果我必须在每个延迟加载的模块中再次重新导入它们,那么将它们导入根模块有什么意义?

应用模块

...
imports: [
BrowserModule,
BrowserAnimationsModule,
MatExpansionModule,
AppRoutingModule,
AngularFireModule.initializeApp(environment.firebase),
AngularFirestoreModule, // imports firebase/firestore, only needed for database features
AngularFireAuthModule, // imports firebase/auth, only needed for auth features,
AngularFireStorageModule, // imports firebase/storage only needed for storage features
SharedModule, // To be imported on each feature module, instead of AppModule. For now, this is fine though
CoreModule,
HttpClientModule
],
...

应用路由模块(延迟加载)

const routes: Routes = [
{
path: 'admin',
loadChildren: './admin/admin.module#AdminModule',
canActivate: [AdminAuthGuard]
}]

管理模块

...
imports: [CommonModule, AdminRoutingModule, SharedModule, CoreModule],

例如,如果我在 SharedModule 中有一个页脚组件,并尝试在我的 AdminHomeComponent 中使用它,它是 AdminModule 的一部分>,我得到一个错误(没有导入 SharedModule)。导入时一切正常。

最佳答案

导入模块让导入外部模块的模块的组件能够看到导入模块中的组件。但仅限于该模块中的模块,而不是嵌套模块中的模块。

在根模块中导入模块对 PROVIDERS 很有用,这与 Components 有很大不同。

如果您导入一个在模块中提供服务的模块,则该模块和嵌套模块中的所有组件都将能够看到提供程序。 (这就是为什么如果模块具有将被重用的提供程序和组件,则最好将模块的提供程序仅放在静态 forRoot() 方法中的原因)。

关于javascript - 为什么共享模块导入不会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58058950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com