我正在尝试通过使用路由为其提供客户端 ID 来启动我的应用程序:
www.mysite.com/11298/[任何页面]
11298 将是客户端 ID,用户可以导航到该路由下的任何页面。所以基本上 clientId 将始终在地址中,无论子路由是什么。路由器配置如下:
export const ROUTES: Routes = [
{
path: ':clientId',
canActivate: [InitializeGuard],
component: StartPageComponent,
children: [
{ path: '', redirectTo: 'page1', pathMatch: 'full' },
{ path: 'page1', component: Page1Component },
{ path: 'page2', component: Page2Component },
{ path: 'page3', component: Page3Component },
{ path: 'page4', component: Page4Component },
],
},
];
我目前在路由上使用 InitializeGuard,如果我可以从该服务访问 :clientId 将是理想的。这可能吗?如果用户总是导航到 www.mysite.com/14918,我可以只读取 StartPageComponent 中的 id,但我不知道用户会去哪条路线。
我如何在不将一些订阅代码重写到我应用程序的每个组件中的情况下读取用户访问的 :clientId?如果我可以将 :clientId 传递给 InitializeGuard 进行 init 并且它会以非侵入方式处理它,那将是非常酷的。
如果不可能,那么另一种方法是什么?我正在考虑为 init 提供一个共享服务,但我仍然必须在所有 PageXComponents 中执行 init,这听起来不太好。
如果这不能作为一种策略,那么在导航时将站点范围的 clientId 传递给每条路线的好策略是什么?