Как перенаправить подстановочный маршрут по условию в angular модуле маршрутизации - PullRequest
0 голосов
/ 03 марта 2020

Есть ли способ обработки маршрута перенаправления, когда пользователь вводит неправильный URL-адрес, используя подстановочный знак, но управляет условием?

Мой проект имеет 3 основных модуля отдельно, и каждый из них имеет какое-то условие, которое может только доступ по ролям пользователя.

проблема в том, что я не знаю, как обрабатывать его по условию, я пробовал canActivate, но он не работает

main.ts: 14 Ошибка: неверная конфигурация маршрута '**'. Должно быть предоставлено одно из следующего: component, redirectTo, children или loadChildren

Вот часть моего кода.

const routes: Routes = [
{
    path: '',
    pathMatch: 'full',
    redirectTo: 'customer1'
},
{
    path: 'customer1',
    component: RootOneComponent,
    children: [
        {
            path: '',
            pathMatch: 'full',
            redirectTo: 'home'
        },
        {
            path: 'home',
            component: HomeOneComponent
        },
        {
            path: '**',
            component: PageNotFoundComponent
        }
    ],
},
{
    path: 'customer2',
    component: RootTwoComponent,
    children: [
        {
            path: '',
            pathMatch: 'full',
            redirectTo: 'home'
        },
        {
            path: 'home',
            component: HomeTwoComponent
        },
        {
            path: 'BlogPicture',
            loadChildren: () => import('./blog/blog.module').then(m => m.BlogModule)
        },
        {
            path: '**',
            component: PageNotFoundComponent
        }
    ],
},
{
    path: 'customer3',
    component: RootThreeComponent,
    children: [
        {
            path: '',
            pathMatch: 'full',
            redirectTo: 'home'
        },
        {
            path: 'home',
            component: HomeThreeComponent
        },
        {
            path: 'blog-price',
            loadChildren: () => import('./blog/blog.module').then(m => m.BlogModule)
        },
        {
            path: '**',
            component: PageNotFoundComponent
        }
    ],
},
 // wild card condition is there the way to manage this?
{
    path: '**',
    redirectTo: 'classic'
}

];

1 Ответ

0 голосов
/ 03 марта 2020

В вашем app.routing.module.ts

const routes: Routes = [{
    path: "customer1",
    component: FirstCustomerModule,
    pathMatch: "full"
  },
  {
    path: "customer2",
    data: { preload: true },
    loadChildren: () => SecondCustomerModule
  },
  {
    path: "customer3",
    data: { preload: true },
    loadChildren: () => ThirdCustomerModule
  }
}

путь определяет ваш упомянутый путь, и в модуле вы должны упомянуть, что упомянутый модуль будет поражен. Затем в ваших модулях вы должны относительно упомянуть путь, я упомянул только маршрутизацию на уровне приложения, затем вы можете дополнительно реализовать маршрутизацию на уровне модуля. Load Children сообщает нашему приложению, что это модуль и в нем есть дополнительные компоненты

...