Вы можете попробовать это:
const routes: Routes = [
{
path: '',
loadChildren: './home/home.module#HomePageModule',
canActivate: [BeforeLoginService]
},
{
path: ':school_name',
loadChildren: './home/home.module#HomePageModule',
canActivate: [BeforeLoginService]
}]
Пожалуйста, проверьте рабочую демонстрацию здесь .
Обновление
Пожалуйста, попробуйте эти маршруты:
const routes: Routes = [
{
path: '',
loadChildren: './home/home.module#HomePageModule',
canActivate: [BeforeLoginService]
},
{
path: ':school_name',
loadChildren: './home/home.module#HomePageModule',
canActivate: [BeforeLoginService]
},
{
path: 'school-dashboard',
loadChildren: './schools/school-dashboard/school-dashboard.module#SchoolDashboardPageModule'
},
{
path: 'admin-dashboard',
loadChildren: './admin/admin-dashboard/admin-dashboard.module#AdminDashboardPageModule'
}
];
Таким образом, когда пользователь вводит mydomain.com/school1
, приложение покажет HomeComponent, который является страницей входа. Оттуда вы можете взять school1
в качестве параметра, используя:
this.activatedRoute.snapshot.paramMap.get('school_name')
С помощью этого параметра вы будете знать, в какую школу поступил, чтобы вы могли показать соответствующую информацию и затем аутентифицировать пользователя. После этого вам придется перемещаться, используя:
this.router.navigate(['/school-dashboard']);
Обратите внимание, что вам нужно будет обработать, если пользователь не ввел название школы в URL, поэтому параметр будет undefined
. Вам нужно показать что-то по умолчанию или показать другую страницу вместо HomeComponent. Вы можете сделать это, изменив первый маршрут, чтобы указать на другой компонент:
{
path: '',
loadChildren: './MY_OTHER_COMPONENT_MODULE_PATH#MY_OTHER_COMPONENT_MODULE'
}