运行 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 }
])
那么基本的故事...
此 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 }
])