在Angular Routing Module类中运行服务功能

问题描述 投票:-1回答:1

所以基本故事......

在这个SPA的顶部是一个“顶栏”组件,在该组件内部是一个搜索栏组件。

现在 - 有一些“目标网页”,我们希望关闭此搜索栏组件。

我理解通过服务使用它的过程(因为有问题的“登陆页面”并没有直接连接到搜索栏组件。而且就其本身而言 - 我有这个工作......

问题来自这样一个事实,即如果你登陆其中一个登陆页面,并且这个搜索栏被关闭......如果你离开整个部分并转到需要该栏的其他区域,你必须添加这项服务为“每条可能的路线”(并且有数十条),以及将来,将此服务和“开启”代码添加到SPA中的任何新页面。

我想知道的(首先:如果这个提议的想法是最好的方法,或者如果有另一种方式更好),如果有一些方法在我们使用的少数路由模块类中添加一个函数(一个用于SPA的每个“部分”,默认情况下会打开搜索栏组件 - 如果需要,各个登录页面可以将其关闭(这样我只需将服务添加到路由模块和特别需要登陆页面),但如果您通过菜单离开该登陆页面并转到SPA的完整其他部分,搜索栏将自动重新打开(因为无论路由模块是否重新打开它)。

我希望这是有道理的!

angular angular2-routing
1个回答
2
投票

我做了类似的事情,我有一个带菜单的组件。我想显示一些没有该菜单的组件,例如登录组件。

我使用多级路由器插座做到了这一点。

应用组件

我只用路由器插座定义了根应用程序组件。然后,当我想要一个没有菜单的组件时,我会路由到该组件。

<router-outlet></router-outlet>

外壳组件

然后我用第二个路由器插座定义了一个“shell”组件。这是我定义菜单的地方。我希望在菜单中显示任何内容,我将路由到此路由器插座。

<mh-menu></mh-menu>
<div class='container'>
   <router-outlet></router-outlet>
</div>

路由模块

然后使用children属性配置路由,以定义路由到ShellComponent的路由。

这样,没有任何组件需要知道菜单是打开还是关闭。这一切都取决于路线配置。

RouterModule.forRoot([
  {
    path: '',
    component: ShellComponent,
    children: [
      { path: 'welcome', component: WelcomeComponent },
      { path: 'movies', component: MovieListComponent },
      { path: '', redirectTo: 'welcome', pathMatch: 'full' }
    ]
  },
  { path: 'login', component: LoginComponent }
  { path: '**', component: PageNotFoundComponent }
])

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.