运行 Angular 路由模块中的服务函数 class

Run a Service Function inside an Angular Routing Module class

那么基本的故事...

此 SPA 的顶部是一个 'top-bar' 组件,该组件内部是一个搜索栏组件。

现在 - 有几个 'landing pages' 我们想关闭这个搜索栏组件。

我了解通过服务使用它的过程(因为有问题的 'landing pages' 没有直接连接到搜索栏组件。就其本身而言 - 我有这个工作......

问题出在以下事实:如果您登陆这些登陆页面之一,并且此搜索栏被关闭...如果您离开整个部分并转到需要该栏的其他区域,您必须将此服务添加到 'every possible route'(并且有几十个),以及将来,将此服务和 'turn on' 代码添加到 SPA 中的任何新页面。

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

我希望这是有道理的!

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

我是用多层路由器插座做的。

应用组件

我只用一个路由器插座定义了根应用程序组件。然后当我想让一个组件在没有菜单的情况下出现时,我路由到该组件。

<router-outlet></router-outlet>

Shell 组件

然后我定义了一个带有第二个路由器插座的 "shell" 组件。这是我定义菜单的地方。我想在菜单中显示的任何内容,我都会路由到这个路由器插座。

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

路由模块

然后使用 children 属性 配置路由以定义路由到 Shell 组件的路由。

这样 none 的组件需要知道菜单应该打开还是关闭。都是路由配置决定的

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 }
])