Angular 角模2(4)

Angular 角模2(4),angular,angular2-modules,Angular,Angular2 Modules,我一直在阅读Angular 2项目的种子模板,我有一个问题,关于什么时候在一个更大的模块中有一个模块和组件。我理解建议为每个功能创建模块,但我很难决定如何构建 我有一个项目,其中有一个公共和管理部分(管理是包装在一个警卫)。每个部分都有一些不同的功能,但它们共享相同的底层模型(获取项目、创建项目等)。我的问题是,在知道某些组件需要保护的情况下,构建此结构的最佳方式是什么?我是否有一个AppModule,它下面有一个Public和AdminModule(受保护的)(有引用sharedmodule中

我一直在阅读Angular 2项目的种子模板,我有一个问题,关于什么时候在一个更大的模块中有一个模块和组件。我理解建议为每个功能创建模块,但我很难决定如何构建

我有一个项目,其中有一个公共和管理部分(管理是包装在一个警卫)。每个部分都有一些不同的功能,但它们共享相同的底层模型(获取项目、创建项目等)。我的问题是,在知道某些组件需要保护的情况下,构建此结构的最佳方式是什么?我是否有一个AppModule,它下面有一个Public和AdminModule(受保护的)(有引用sharedmodule中模型的组件)以及下面每个特性的一个模块?或者我是否有一个AppModule,下面有所有功能模块,并直接保护每个组件?我想这个问题被问了很多,或者我问错了地方,所以任何关于去哪里/做什么的方向都会很感激

应用模块供参考

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
    HttpService
    。我还将从此处导出应具有应用程序范围的Angular本机服务(例如:
    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
;而不应导入