Я редактирую свой ответ, так что, возможно, я направлю вас в правильном направлении.
Насколько я понимаю, у вас есть 2 требования.
1) Укажите, является ли пользователь UserA или UserB
2) Изменить поведение сайта в зависимости от UserA или UserB
Прежде всего, чтобы идентифицировать пользователя, мы должны передать какой-то параметр с сайта реферера. Обычно это следует делать с помощью механизма единого входа (токен и т. Д.). Но в этом случае, чтобы упростить случай с пребыванием с параметром Querystring.
Пользователь A: http://yoursite.com? User = a
Пользователь B: http://yoursite.com? User = b
Так что теперь мы можем определить, «общаемся» ли мы с Пользователем А или Пользователем Б.
Отныне мы можем настроить все приложение под наши нужды:
Различные макеты, различные маршруты и т. Д.
Чтобы настроить разные маршруты в конкретных случаях использования, можно настроить разные определения маршрутов.
const standardRoutes: Routes = [
{
path: 'main',
loadChildren: 'app/main/standard/some.module#SomeModule',
canActivate: [AuthenticationGuard]
},
{
path: 'login',
component: LoginComponent
},
{
path: '**',
redirectTo: 'main/standard'
}
]
const AUserRoutes: Routes = [
{
path: 'main',
loadChildren: 'app/main/a_user/some.module#SomeModule',
canActivate: [AuthenticationGuard]
},
{
path: 'login',
component: LoginComponent
},
{
path: '**',
redirectTo: 'main/a_user_url'
}];
const BUserRoutes: Routes = [
{
path: 'main',
loadChildren: 'app/main/b_user/some.module#SomeModule',
canActivate: [AuthenticationGuard]
},
{
path: 'login',
component: LoginComponent
},
{
path: '**',
redirectTo: 'main/b_user_url'
}];
Затем в модуле приложения для обработки разных пользователей (если необходимо определить разные маршруты - обычно требуется только в некоторых очень особых случаях)
const standardRoutes: Routes = [
{
path: 'main',
loadChildren: 'app/main/standard/some.module#SomeModule',
canActivate: [AuthenticationGuard]
},
{
path: 'login',
component: LoginComponent
},
{
path: '**',
redirectTo: 'main/standard'
}
]
const AUserRoutes: Routes = [
{
path: 'main',
loadChildren: 'app/main/a_user/some.module#SomeModule',
canActivate: [AuthenticationGuard]
},
{
path: 'login',
component: LoginComponent
},
{
path: '**',
redirectTo: 'main/a_user_url'
}];
const BUserRoutes: Routes = [
{
path: 'main',
loadChildren: 'app/main/b_user/some.module#SomeModule',
canActivate: [AuthenticationGuard]
},
{
path: 'login',
component: LoginComponent
},
{
path: '**',
redirectTo: 'main/b_user_url'
}];
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
HttpClientModule,
RouterModule.forRoot(standardRoutes, {
enableTracing: false
}),
],
providers: [
],
bootstrap: [AppComponent]
})
export class AppModule {
public constructor(
private router: Router
) {
const user = router.routerState.snapshot.root.queryParams.user;
if (user === 'a') {
router.resetConfig(AUserRoutes);
} else if (user === 'b') {
router.resetConfig(BUserRoutes);
}
}
}