gpt4 book ai didi

Angular2 访问子模块组件

转载 作者:太空狗 更新时间:2023-10-29 18:06:04 25 4
gpt4 key购买 nike

我有一个带有子模块的 Angular2 应用程序:

├───app (module)                                 
│ ├───authentication (module)
│ │ ├───components
│ │ │ ├───login
│ │ │ ├───sign-in
│ │ │ ├───sign-up
│ │ │ ├───socials-callback
│ │ │ └───socials-sign-in
│ │ ├───models
│ │ └───services
│ ├───components
│ │ └───nav-bar
│ ├───home (module)
│ ├───shared (module)
│ │ ├───components
│ │ │ └───search-dropdown
│ │ └───services
│ └───user (module)
│ ├───models
│ └───services

每个组件都在(其模块的)module_name.module.ts 文件中声明。每个模块文件都导入到 app.module.ts 文件中。

这是我的 app.module.ts 文件:

import { BrowserModule } from '@angular/platform-browser';
import ...

import { SharedModule } from './shared/shared.module';

@NgModule({
imports: [
AppRoutingModule,
...
SharedModule
],
declarations: [
AppComponent
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

我的 shared.module.ts 文件:

import { NgModule } from '@angular/core';
import ...

import { SearchDropdownComponent } from './components/search-dropdown/search-dropdown.component';

@NgModule({
imports: [
CommonModule
],
declarations: [
SearchDropdownComponent
]
})
export class SharedModule { }

当我尝试从我的应用程序模块的模板访问 SearchDropdownComponent 时,出现错误提示我没有与之对应的组件。

但是当我直接在我的 app.module.ts 文件上添加 SearchDropdownComponent 导入时,它起作用了。

难道不能访问子模块的组件吗?我做错了什么?

最佳答案

要使组件在模块外可用,请将其添加到模块的 exports 声明中。

import { NgModule } from '@angular/core';
import ...

import { SearchDropdownComponent } from './components/search-dropdown/search-dropdown.component';

@NgModule({
imports: [
CommonModule
],
declarations: [
SearchDropdownComponent
],
exports: [
SearchDropdownComponent
]
})
export class SharedModule { }

API 引用:NgModule.exports

另请注意,一个组件只能属于一个模块。

关于Angular2 访问子模块组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40162000/

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