所以基本故事......
在这个SPA的顶部是一个“顶栏”组件,在该组件内部是一个搜索栏组件。
现在 - 有一些“目标网页”,我们希望关闭此搜索栏组件。
我理解通过服务使用它的过程(因为有问题的“登陆页面”并没有直接连接到搜索栏组件。而且就其本身而言 - 我有这个工作......
问题来自这样一个事实,即如果你登陆其中一个登陆页面,并且这个搜索栏被关闭......如果你离开整个部分并转到需要该栏的其他区域,你必须添加这项服务为“每条可能的路线”(并且有数十条),以及将来,将此服务和“开启”代码添加到SPA中的任何新页面。
我想知道的(首先:如果这个提议的想法是最好的方法,或者如果有另一种方式更好),如果有一些方法在我们使用的少数路由模块类中添加一个函数(一个用于SPA的每个“部分”,默认情况下会打开搜索栏组件 - 如果需要,各个登录页面可以将其关闭(这样我只需将服务添加到路由模块和特别需要登陆页面),但如果您通过菜单离开该登陆页面并转到SPA的完整其他部分,搜索栏将自动重新打开(因为无论路由模块是否重新打开它)。
我希望这是有道理的!
我做了类似的事情,我有一个带菜单的组件。我想显示一些没有该菜单的组件,例如登录组件。
我使用多级路由器插座做到了这一点。
应用组件
我只用路由器插座定义了根应用程序组件。然后,当我想要一个没有菜单的组件时,我会路由到该组件。
<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 }
])