Можно ли маршрутизировать в зависимости от состояния в angular?

У меня есть динамические конфигурации для маршрутизации в угловых приложениях, как показано ниже.


 { path: ':locale/:id', component: HomePageCategory    },
 { path: ':locale/:platform', component: PlatformPageCategory    },
 { path: ':locale/contact', component: ContactPageCategory    },

В приведенном выше коде у меня есть навигация на основе динамического значения. если 2-й URL-адрес представлен как число, это означает, что он должен перейти к одному компоненту, а его строка означает, что он должен перейти к другому компоненту. исходя из этого только его и следует маршрутизировать. это мое требование. возможно ли это реализовать.

возможно ли маршрутизировать на основе условий?

Кроме того, поддерживается маршрутизация на основе условий или нет? как и ASPNET Core. Пожалуйста, проверьте изображения ниже.

Ограничения маршрутизации ASP.NET Core


person Pradeep Vasu    schedule 13.06.2019    source источник


Ответы (2)


Вы можете сделать это через файл canActivate. В canActivate проверьте тип routeParam и соответственно перенаправьте его на другой маршрут по вашему желанию.

Я сделал пример stackBlitz прямо здесь: https://stackblitz.com/edit/angular6-pux5el?file=app/my-guard.guard.ts

person Udi Mazor    schedule 13.06.2019
comment
Привет @Udi, я пытался, но когда я маршрутизирую программно, это всегда требует только конфигурации 1-го маршрутизатора. я не могу вызвать 2-й маршрутизатор программно. не могли бы вы поделиться какой-либо идеей по этому поводу. - person Pradeep Vasu; 17.06.2019
comment
Я сделал пример stackBlitz. Если вы напишите строку, она перейдет к строковому компоненту, а если вы напишете число, она перейдет к числовому компоненту. stackblitz.com/edit/angular6-pux5el?file= приложение/my-guard.guard.ts - person Udi Mazor; 17.06.2019
comment
Привет, не могли бы вы проверить изображение, это то, что мне нужно в angular.... i.stack .imgur.com/aMTJ6.png - person Pradeep Vasu; 17.06.2019

Я не знаю, как реализовать это в описании путей. Что-то, что вы можете сделать, это рефакторить ваши пути и сделать так, чтобы они имели различное количество параметров. Затем вы можете найти обходной путь, когда вам нужно перейти к вашему маршруту.

Пример:

if (isNaN(parseInt(yourParam))){
   // This is not a number, navigate to route 1
} else {
   // This is a number, navigate to route 2
}
person Gabryel Ferreira    schedule 13.06.2019
comment
Привет @Gabryel, я пытался, но когда я маршрутизирую программно, это всегда требует только конфигурации 1-го маршрутизатора. я не могу вызвать 2-й маршрутизатор программно. не могли бы вы поделиться какой-либо идеей по этому поводу. - person Pradeep Vasu; 17.06.2019