
Изображение, показанное выше, содержит много изгибов и поворотов по сравнению с Упрощенная угловая маршрутизация - Часть 1 ». Так и должно быть, поэтому это Часть 2.
В Части 1 мы рассмотрели основные концепции маршрутизации с помощью простого руководства по настройке маршрутов в приложении Angular. В этом уроке мы рассмотрим:
- Настройка дочерних маршрутов
- Активированные маршруты
Хорошо, давайте начнем с них по очереди :)
Настройка дочерних маршрутов
Давайте сегодня отправимся в путешествие из Индии в США, чтобы понять детские маршруты, и, благодаря нашей планете, она круглая :) Итак, у нас есть два варианта:
- Через Атлантику
- Через Тихий океан


Здесь мы называем родительский путь, который нам нужно покрыть путем «Индия-США», и варианты, которые у нас есть при покрытии этого пути, - это « дочерние маршруты ».
Давайте превратим эти мысли в код:
- Нам нужно создать родительский компонент
India-USAс двумя функциямиviaAtlantic()иviaPacific(). - Нам нужно создать два дочерних компонента
AtlanticиPacific. - Нам нужно настроить наши компоненты, сообщив Angular, что компоненты
AtlanticиPacificявляются дочерними маршрутамиIndia-USAродительского маршрута.
Создание компонента Индия-США
- Файл india-usa.component.html должен содержать две кнопки, которые помогут нам добраться до США: viaAtlantic и viaPacific.
Если мы нажмем viaAtlantic, будет вызвана функция viaAtlantic() из india-usa.component.ts, которая перенаправит нас на путь atlantic, как показано с кодом:
Здесь необходимо сосредоточить внимание на следующих важных моментах:
- Нам нужно импортировать модули
ActivatedRouteиRouterиз@angular/router. - Объект {relativeTo: this.router} гарантирует, что путь остается относительно его родительского пути. Итак, в этом случае пути должны быть
india-usa/atlanticиindia-usa/pacific.
2. Теперь наш следующий шаг - создать компоненты Atlantic и Pacific, чтобы они могли визуализировать вместо router-outlet. Создать их - самая простая задача :)
Создание Атлантического компонента
Создание Тихоокеанского компонента
3. Наконец, нам нужно настроить наше приложение Angular так, чтобы Atlantic и Pacific были дочерними маршрутами для India-USA. Мы делаем это, объявляя children[] и определяя путь и компоненты внутри него.
И вот результат :)

Теперь наш путь установлен, и мы готовы отправиться в США. Давайте узнаем больше о плоскости: p
Параметризованные маршруты
Путешествовать на самолете всегда интересно, и, поскольку я гурман, меня больше волнует еда, чем путешествие: p
Теперь у путешествующих через Атлантический и Тихий океан списки меню разные. Также каждый список меню на экране содержит идентификаторы меню для упорядочивания элементов. Как и в этой таблице:


Нам нужно указать правильный путь вместе с идентификатором заказа, чтобы получить правильную еду. Например: указание id = 3 как india-usa/atlantic/3 предоставит Vegetarian Meal.
Давайте превратим это в код:
Нам нужно создать два массива, определяющих блюда, а также нам нужна функция для бронирования наших блюд, а затем мы передадим идентификатор еды в функцию в качестве параметра.

Как вы можете видеть, функции, показанные ниже, перемещаются по пути в соответствии с идентификатором, переданным в URL-адресе, вам необходимо передать параметризованные id внутри массива в методе route.navigate .
Совет: если вы планируете добавить больше параметризованных идентификаторов, вы можете продолжать добавлять их внутри массива и соответствующим образом изменять массив маршрутов в app.module.ts
pacificMenu(id){
this.route.navigate(['pacific', id], { relativeTo: this.router});
}
// india-usa.component.ts
Кроме того, нам нужно сообщить нашему массиву маршрутов, что мы используем параметризованные маршруты, для этого мы присоединяем /: после нашего родительского маршрута, как показано для атлантических и тихоокеанских путей:
Теперь, если мы бронируем обед Lacto в PacificMenu, у нас есть путь localhost:4200/india-usa/pacific/2, но нам также нужно напечатать идентификатор еды на экране, что означает, что нам нужно извлечь идентификатор еды из URL-адреса. .
После указания пути localhost:4200/india-usa/pacific/2 мы собираемся визуализировать компонент меню, показывая нам зарезервированный идентификатор меню.
Создание компонента меню
Подобно компонентам Atlantic и Pacific, мы создадим компонент меню.
После создания компонента меню мы будем использовать модуль ActivatedRoute для получения selected id из URL-адреса, модуль ActivatedRoute содержит метод paramMap, который возвращает Observable.. Как видно, при изменении идентификатора URL-адреса angular обновляет привязку в представлении.
ActivatedRoute содержит информацию о маршруте, связанном с компонентом, загруженным в розетку.
Здесь следует отметить несколько важных моментов:
- Оператор
+, используемый в(params.get('id'))для изменения строкового идентификатора, полученного из URL, на числовой идентификатор. - Как только URL-адрес обновляется новым идентификатором,
(params.get('id'))изменяется, и, следовательно, значениеselected, привязанное к шаблону, изменяется.
Наконец-то наш путь в США определен, и мы забронировали еду в самолете :)

Надеюсь, этот новый способ визуализации маршрутизации поможет вам лучше его запомнить. Маршрутизация - это весело, вам просто нужно один раз попрактиковаться :)
Для получения полного кода проверьте:
Удачного путешествия: p
Если вам понравилась статья, пожалуйста, хлопните в ладоши. Совет. Ваши 50 хлопков сделают мой день лучше!
Пожалуйста, поделитесь также в Fb и Twitter. Если вы хотите получать обновления, подписывайтесь на меня в Twitter и Medium. Если что-то неясно или вы хотите что-то указать, прокомментируйте ниже.