Инициализация приложения Angular2 с идентификатором клиента с использованием маршрутизации - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь запустить свое приложение, предоставив ему идентификатор клиента с помощью маршрутов:

www.mysite.com / 11298 / [любая страница]

11298 будет идентификатором клиента, и пользователь сможет перейти на любую страницу по этому маршруту. Таким образом, в основном, 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, но я не могу знать, по какому маршруту пойдет пользователь.

Как я мог прочитать: clientId, куда когда-либо переходит пользователь, не переписывая какой-либо код подписки в каждый компонент моего приложения? Было бы здорово, если бы я мог передать: clientId в InitializeGuard для init, и он позаботился бы об этом незаметно.

Если это невозможно, каков будет другой способ сделать это? Я думаю об общей службе для init, но мне все равно придется выполнять init во всех PageXComponents, что не очень хорошо.

Если это не сработает как стратегия, какова будет хорошая стратегия для передачи клиентского идентификатора всего сайта каждому маршруту при навигации?

...