Можем ли мы иметь два маршрута с динамическими именами на угловом сайте 5?

hs27 спросил: 28 апреля 2018 в 09:02 в: routes

Маршруты следующие:

{
  path: ":referralCode",
  component: HomeComponent
},
{
  path: ':slug', 
  component: PagesComponent
}

1 ответ

Есть решение
mounds ответил: 30 апреля 2018 в 11:31

Да, до тех пор, пока вы можете определить разные шаблоны для каждого, вы должны иметь возможность использовать UrlMatcher. См. Https://angular.io/api/router/UrlMatcher.

Пример:

export function slugMatcher(url: UrlSegment[]) {
    return url[0].path.startsWith('slug') ? ({consumed: url}) : null; // define a pattern for a slug??
}export function referralMatcher(url: UrlSegment[]) {
    return url[0].path.startsWith('ref') ? ({consumed: url}) : null; // define a pattern for a referal??
}export const routes = [
    {
        matcher: slugMatcher,
        component: HomeComponent
    },
    {
        matcher: referralMatcher, 
        component: PagesComponent
    }
];
hs27 ответил: 28 апреля 2018 в 10:01
Можете ли вы привести пример? Благодарю.
mounds ответил: 28 апреля 2018 в 10:25
Сделано - вам просто нужно решить логику шаблона
hs27 ответил: 28 апреля 2018 в 11:05
могу ли я сделать вызовы api внутри этого: функция экспорта slugMatcher (url: UrlSegment []) {return url [0] .startsWith ('slug'); // определить шаблон для пули? }
mounds ответил: 28 апреля 2018 в 11:19
Не уверен, но я бы не рекомендовал его в любом случае ... Я предполагаю, что вы хотите проверить, существует ли slug / referralCode до его маршрутизации? Для этого разработаны различные гвардейские уклоны. angular.io/guide/router#milestone-5-route-guards
hs27 ответил: 30 апреля 2018 в 10:18
В этом случае, в зависимости от того, какое совпадение с шаблоном маршрута происходит сначала, оно проверяет это и останавливается там. Что делать, если я хочу продолжить проверку следующего маршрута, если первое не соответствует?