Angular 角模2(4)
我一直在阅读Angular 2项目的种子模板,我有一个问题,关于什么时候在一个更大的模块中有一个模块和组件。我理解建议为每个功能创建模块,但我很难决定如何构建 我有一个项目,其中有一个公共和管理部分(管理是包装在一个警卫)。每个部分都有一些不同的功能,但它们共享相同的底层模型(获取项目、创建项目等)。我的问题是,在知道某些组件需要保护的情况下,构建此结构的最佳方式是什么?我是否有一个AppModule,它下面有一个Public和AdminModule(受保护的)(有引用sharedmodule中模型的组件)以及下面每个特性的一个模块?或者我是否有一个AppModule,下面有所有功能模块,并直接保护每个组件?我想这个问题被问了很多,或者我问错了地方,所以任何关于去哪里/做什么的方向都会很感激 应用模块供参考Angular 角模2(4),angular,angular2-modules,Angular,Angular2 Modules,我一直在阅读Angular 2项目的种子模板,我有一个问题,关于什么时候在一个更大的模块中有一个模块和组件。我理解建议为每个功能创建模块,但我很难决定如何构建 我有一个项目,其中有一个公共和管理部分(管理是包装在一个警卫)。每个部分都有一些不同的功能,但它们共享相同的底层模型(获取项目、创建项目等)。我的问题是,在知道某些组件需要保护的情况下,构建此结构的最佳方式是什么?我是否有一个AppModule,它下面有一个Public和AdminModule(受保护的)(有引用sharedmodule中
import { NgModule, Inject } from '@angular/core';
import { RouterModule } from '@angular/router';
import { CommonModule, APP_BASE_HREF } from '@angular/common';
import { HttpModule, Http } from '@angular/http';
import { FormsModule } from '@angular/forms';
import { Ng2BootstrapModule } from 'ngx-bootstrap';
import { NavMenuComponent } from './navmenu/navmenu.component';
import { NotFoundComponent } from './not-found/not-found.component';
import { LinkService } from '../shared/link.service';
import { AuthenticationService } from './authentication.service';
import { ORIGIN_URL } from '../shared/constants/baseurl.constants';
import { TransferHttpModule } from '../../modules/transfer-http/transfer-http.module';
@NgModule({
declarations: [
NavMenuComponent,
NotFoundComponent
],
imports: [
CommonModule,
HttpModule,
FormsModule,
RouterModule,
Ng2BootstrapModule.forRoot(),
TransferHttpModule,
],
providers: [
LinkService,
AuthenticationService,
],
exports: [
CommonModule,
HttpModule,
FormsModule,
Ng2BootstrapModule,
TransferHttpModule,
RouterModule
]
})
export class CoreModule {
}
初步答复
听起来您需要:
- 服务模块(通常称为
),包含整个应用程序将使用的服务(提供者)。例如:定制的CoreModule
或AuthenticationService
。我还将从此处导出应具有应用程序范围的Angular本机服务(例如:HttpService
,RouterModule
)。您的主FormsModule
将是唯一导入AppModule
CoreModule
- 一个小部件模块,它拥有(并导出)在应用程序的许多组件之间共享的组件、指令和管道:
可能是一个很好的名称SharedModule
- 一个非常薄的
,基本上只有一个AppModule
,带有一个路由器插座(如果你的应用程序有路由)和一个裸模板。应用程序的内容将显示在AppComponent
中,并由接下来的两个模块控制 - 一个
,其中包含专门为最终用户提供应用程序所需的组件、指令和管道(如果您有一个大型应用程序,这可能是几个模块)。此模块将导入CustomerModule
。您需要相应的SharedModule
,以及组件指令的路由器路径CustomerRoutingModule
- 一个
,其中包含专门为管理界面提供服务所需的组件、指令和管道。您需要相应的AdminModule
及其带有路由器指令的防护装置AdminRoutingModule
Ng2BootstrapModule
正确导入引发错误的模块,因此会出现有关不存在标记的错误。将Ng2BootstrapModule
(或.forChild()
如果存在)导入SharedModule
并将SharedModule
导入所有其他模块。或者,如果您没有SharedModule
,只需将Ng2BootsrapModule
(或者.forChild()
(如果存在)导入其他每个模块(除了CoreModule
,它已经有Ng2BootsrapModule.forRoot()
请记住,CoreModule
只应导入根AppModule
;而不应导入其他模块。初始答案
听起来您需要:
- 一个服务模块——通常称为
——包含整个应用程序将使用的服务(提供者)。例如:一个自定义CoreModule
或AuthenticationService
。我还将从这里导出应该具有应用程序范围的本地服务(例如:HttpService
,RouterModule
)。您的主FormsModule
将是唯一导入AppModule
CoreModule
- 一个小部件模块,它拥有(并导出)在应用程序的许多组件之间共享的组件、指令和管道:
可能是一个很好的名称SharedModule
- 一个非常薄的
,基本上只有一个AppModule
,带有一个路由器插座(如果你的应用程序有路由)和一个裸模板。应用程序的内容将显示在AppComponent
中,并由接下来的两个模块控制 - 一个
,其中包含专门为最终用户提供应用程序所需的组件、指令和管道(如果您有一个大型应用程序,这可能是几个模块)。此模块将导入CustomerModule
。您需要相应的SharedModule
,以及组件指令的路由器路径CustomerRoutingModule
- 一个
,其中包含专门为管理界面服务所需的组件、指令和管道。您需要相应的AdminModule
及其带有路由器指令的防护装置AdminRoutingModule
Ng2BootstrapModule
正确导入引发错误的模块,因此出现有关不存在标记的错误。导入Ng2BootstrapModule
(或.forChild()
(如果存在)进入SharedModule
并将SharedModule
导入所有其他模块。或者,如果您没有SharedModule
,只需将Ng2BootsrapModule
(或.forChild()
导入每个其他模块(除了CoreModule
,它已经有Ng2BootsrapModule.forRoot)()
请记住,CoreModule
只应导入根AppModule
;而不应导入