首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个模块的角5路由

具有多个模块的角5路由
EN

Stack Overflow用户
提问于 2017-11-28 16:55:31
回答 1查看 2.8K关注 0票数 2

我面临着使用多个模块配置应用程序路由的问题。如果可能,我希望将我的应用程序分离到多个模块,并将它们全部路由到一个路由配置文件中。

我有四个模块:

  1. AppModule -应用程序的默认根模块
  2. LoginModule -执行登录并在LoginComponent上声明的模块
  3. MainModule --一个共享模块,它声明了基本的应用程序布局组件,如头、页脚、边菜单等等。
  4. As400screensModule -这个模块声明了应该出现在应用程序布局中的组件,并通过url和<router-outlet>标记选择要加载的组件。

让我们从我的app.routing.ts文件开始

代码语言:javascript
复制
export const routes: Routes = [
  { path: '', component: LoginComponent, pathMatch: 'full' },
  { path: 'app', component: MainComponent, canActivate: [OLAuthGuard],
       children: [
        { path: 'inventory-and-purchasing-menu', component: InventoryAndPurchasingMenuComponent },
        { path: 'main-menu', component: MainMenuComponent },
        { path: 'inventory-management', component: InventoryManagementComponent },
        { path: 'items', component: ItemsComponent },
      ]
  },
];

@NgModule({
  imports: [
    NgbModule,
    FormsModule,
    CommonModule,
    RouterModule.forRoot(routes),
  ],
  declarations: [
  ],
  exports: [RouterModule],
  providers: [],
  bootstrap: []
})


export class AppRoutingModule {

}

我的app.component.html

代码语言:javascript
复制
<router-outlet></router-outlet>
<app-preloader></app-preloader>

首先,路由器应该转到登录页面,在成功登录后,导航到‘/app/主菜单’,该菜单应该使用MainMenuComponent从子路由加载。

当我想要在<router-outlet>中使用MainComponent标记时,问题就开始了,它应该从不同的模块加载子组件。

我的MainComponent.html

代码语言:javascript
复制
<app-header></app-header>
<div class="ol-body">
  <app-side-menu></app-side-menu>
  <div class="container">
    <router-outlet></router-outlet>
  </div>
</div>
<app-footer></app-footer>

我的main.module.ts

代码语言:javascript
复制
@NgModule({
  imports: [
    NgbModule,
    FormsModule,
    CommonModule,
    As400screensModule,
    MfrpcModule
  ],
  declarations: [HeaderComponent, FooterComponent, OLSideMenuComponent,
    BreadcrumbsComponent, PreloaderComponent, MainComponent, TestComponent, TestChildComponent],
  exports: [ HeaderComponent, FooterComponent, OLSideMenuComponent,
    BreadcrumbsComponent, PreloaderComponent, MainComponent,TestComponent, TestChildComponent],
  providers: [],
  bootstrap: []
})

export class MainModule {

}

我的as400screens.Module.ts

代码语言:javascript
复制
export const as400screensRoutes: Routes = [
  {path: 'inventory-and-purchasing-menu', component: InventoryAndPurchasingMenuComponent},
  {path: 'main-menu', component: MainMenuComponent},
  {path: 'inventory-management', component: InventoryManagementComponent},
  {path: 'items', component: ItemsComponent},
];

@NgModule({
  imports: [
    NgbModule,
    FormsModule,
    CommonModule,
    RouterModule.forChild(as400screensRoutes)
  ],
  declarations: [
    MainMenuComponent,
    InventoryManagementComponent,
    ItemsComponent,
    InventoryAndPurchasingMenuComponent
  ],
  exports: [
    RouterModule,
    MainMenuComponent,
    InventoryManagementComponent,
    ItemsComponent,
    InventoryAndPurchasingMenuComponent],
  providers: [],
  bootstrap: []
})

export class As400screensModule {

}

我的app.module.ts

代码语言:javascript
复制
@NgModule({
  declarations: [AppComponent],
  imports: [
    AppRoutingModule, // default app routing module
    LoginModule,
    MainModule,
    BrowserModule,
    FormsModule,
    HttpClientModule,
    CommonModule,
    AngularWebStorageModule,
    NgbModule.forRoot(),
  ],
  exports: [],
  providers: [OLConfig, OLHttpService, OLUtils, OLAppService, OLAuthGuard, OLAuthGuardService, OLConstants],
  bootstrap: [AppComponent],
})

export class AppModule {
}

我的问题是,我需要在as400screensRoutes中配置as400screensModule,但是在app.routing.ts中,我已经声明了all应用程序的路由。如果我删除了MainComponent.ts.,我将从as400screensRoutes中得到错误'router-outlet' is not a known element:我试着使用模块并在不同的地方导入它们,但使其工作的唯一方法是在as400screensRoutes中使用app.routing.ts中已经定义的路由在as400screensModule中声明app.routing.ts。

是否有一种仅在app.routing.ts中配置路由的方法?也许我已经把事情复杂化了,所以希望得到反馈,我正在以正确的方式配置路由。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-28 17:17:17

RouterModule导入到MainModule。因为您在MainComponent中使用路由器出口,这是MainModule的一部分。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47536955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档