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

时间:2018-02-28 19:26:08

标签: angular angular2-routing

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

在这个SPA的顶部是一个顶级酒吧'组件,并且该组件内部是搜索栏组件。

现在 - 有几个登陆页面'我们想要关闭此搜索栏组件。

我了解通过服务使用此功能的过程(因为有问题的目标网页并未直接连接到搜索栏组件。而且本身就是这样 - 我有这个工作...

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

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

我希望这是有道理的!

1 个答案:

答案 0 :(得分:2)

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

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

应用组件

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

<router-outlet></router-outlet>

外壳组件

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

<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