Создание пользовательских сопоставителей маршрутов
Angular Router поддерживает мощную стратегию сопоставления, которую можно использовать, чтобы помочь пользователям перемещаться по приложению. Эта стратегия сопоставления поддерживает статические маршруты, переменные маршруты с параметрами, маршруты с подстановочными знаками и многое другое. Кроме того, вы можете создать собственное сопоставление шаблонов для ситуаций, когда URL-адреса устроены сложнее.
В этом руководстве вы создадите пользовательский сопоставитель маршрутов с помощью UrlMatcher Angular. Этот сопоставитель ищет в URL-адресе имя пользователя в Twitter.
Цели
Реализуйте UrlMatcher Angular, чтобы создать пользовательский сопоставитель маршрутов.
Создание примера приложения
С помощью Angular CLI создайте новое приложение angular-custom-route-match. Помимо стандартной платформы приложения Angular, вы также создадите компонент profile.
-
Создайте новый проект Angular angular-custom-route-match.
ng new angular-custom-route-match
Когда появится запрос
Would you like to add Angular routing?, выберитеY.Когда появится запрос
Which stylesheet format would you like to use?, выберитеCSS.Через несколько мгновений новый проект
angular-custom-route-matchбудет готов. -
В терминале перейдите в каталог
angular-custom-route-match. -
Создайте компонент profile.
ng generate component profile
-
В редакторе кода найдите файл
profile.htmlи замените содержимое-заполнитель следующим HTML-кодом.<p>Hello {{ username() }}!</p> -
В редакторе кода найдите файл
app.htmlи замените содержимое-заполнитель следующим HTML-кодом.<h2>Routing with Custom Matching</h2> Navigate to <a routerLink="/@Angular">my profile</a> <router-outlet />
Настройка маршрутов приложения
После подготовки платформы приложения необходимо добавить возможности маршрутизации в файл app.config.ts. В рамках этого процесса вы создадите пользовательский сопоставитель URL-адресов, который ищет в URL-адресе имя пользователя в Twitter. Это имя определяется предшествующим ему символом @.
-
Откройте в редакторе кода файл
app.config.ts. -
Добавьте оператор
importдляprovideRouterAngular иwithComponentInputBinding, а также для маршрутов приложения.import {provideRouter, withComponentInputBinding} from '@angular/router'; import {routes} from './app.routes'; -
Добавьте оператор
provideRouter(routes, withComponentInputBinding())в массив поставщиков. -
Определите пользовательский сопоставитель маршрутов, добавив следующий код в маршруты приложения.
{ matcher: (url) => { if (url.length === 1 && url[0].path.match(/^@[\w]+$/gm)) { return {consumed: url, posParams: {username: new UrlSegment(url[0].path.slice(1), {})}}; } return null; }, component: Profile, },
Этот пользовательский сопоставитель — функция, выполняющая следующие действия:
- Сопоставитель проверяет, что массив содержит только один сегмент
- Сопоставитель использует регулярное выражение, чтобы проверить соответствие имени пользователя заданному формату
- При совпадении функция возвращает весь URL-адрес, определяя параметр маршрута
usernameкак подстроку пути - Если совпадения нет, функция возвращает null, и маршрутизатор продолжает искать другие маршруты, соответствующие URL-адресу
ПОЛЕЗНО: Пользовательский сопоставитель URL-адресов работает так же, как любое другое определение маршрута. Определяйте дочерние маршруты или маршруты с отложенной загрузкой так же, как и для любого другого маршрута.
Чтение параметров маршрута
Теперь, когда пользовательский сопоставитель настроен, можно связать параметр маршрута с компонентом profile.
Откройте в редакторе кода файл profile.ts и создайте input, соответствующий параметру username. Ранее в provideRouter мы добавили возможность withComponentInputBinding. Она позволяет Router привязывать данные непосредственно к компонентам маршрутов.
username = input.required<string>();
Проверка пользовательского сопоставителя URL-адресов
Когда код готов, можно проверить пользовательский сопоставитель URL-адресов.
-
В окне терминала выполните команду
ng serve.ng serve
-
Откройте в браузере адрес
http://localhost:4200.Вы должны увидеть одну веб-страницу с предложением
Navigate to my profile. -
Нажмите ссылку мой профиль.
На странице появится новое предложение:
Hello, Angular!.
Следующие шаги
Сопоставление шаблонов с помощью Angular Router обеспечивает большую гибкость при работе с динамическими URL-адресами в приложении. Дополнительные сведения об Angular Router см. в следующих материалах:
ПОЛЕЗНО: Этот материал основан на статье Пользовательское сопоставление маршрутов с помощью Angular Router Брендона Робертса (Brandon Roberts).
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/guide/routing/routing-with-urlmatcher