使用路由初始化具有客户端ID的Angular2应用程序

时间:2018-04-28 23:14:14

标签: angular angular-routing angular-router-guards

我试图通过使用路线提供客户端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 for init并且它会非侵入性地处理它将会非常酷。

如果不可能,那么另一种方法是什么?我正在考虑为init提供共享服务,但我仍然需要在所有的PageXComponents中执行init,这听起来并不好。

如果这不是一个策略,那么在导航时将站点范围的clientId传递给每个路径会是一个好策略吗?

0 个答案:

没有答案