Добавление навигации¶
Это руководство основывается на первом шаге учебника "Начало работы с базовым приложением Angular".
На данном этапе разработки приложение интернет-магазина имеет базовый каталог товаров.
В следующих разделах вы добавите в приложение следующие функции:
- Введите URL-адрес в адресной строке, чтобы перейти на соответствующую страницу товара.
- Щелкайте по ссылкам на странице для навигации внутри вашего одностраничного приложения
- Нажимайте кнопки браузера "назад" и "вперед" для интуитивной навигации по истории браузера.
Ассоциируйте URL-путь с компонентом¶
Приложение уже использует Angular Router
для перехода к компоненту ProductListComponent
. В этом разделе показано, как определить маршрут для отображения отдельных деталей продукта.
1. Создайте новый компонент для подробной информации о продукте.
В терминале создайте новый компонент product-details
, выполнив следующую команду:
1 |
|
2. В app.module.ts
добавьте маршрут для деталей продукта, с путем
products/:productId
и ProductDetailsComponent
для компонента
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
3. Откройте product-list.component.html
.
4. Измените якорь названия продукта, чтобы включить routerLink
с product.id
в качестве параметра.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Директива RouterLink
помогает вам настроить элемент якоря.
В данном случае маршрут, или URL, содержит один фиксированный сегмент, /products
.
Последний сегмент является переменным и вставляет свойство id
текущего продукта.
Например, URL для продукта с id
, равным 1, будет выглядеть так: https://getting-started-myfork.stackblitz.io/products/1
.
5. Убедитесь, что маршрутизатор работает так, как задумано, щелкнув по названию продукта.
Приложение должно отобразить ProductDetailsComponent
, который в настоящее время говорит "product-details works!".
Обратите внимание, что URL в окне предварительного просмотра меняется.
Конечным сегментом является products/#
, где #
— это номер маршрута, на который вы нажали.
Просмотр информации о продукте¶
Компонент ProductDetailsComponent
управляет отображением каждого продукта. Angular Router отображает компоненты на основе URL браузера и определенных вами маршрутов.
В этом разделе вы будете использовать Angular Router для объединения данных products
и информации о маршрутах, чтобы отобразить конкретные детали для каждого продукта.
1. В product-details.component.ts
импортируйте ActivatedRoute
из @angular/router
, а массив products
из ../products
.
1 2 3 4 |
|
2. Определите свойство product
.
1 2 3 4 |
|
3. Вставьте ActivatedRoute
в constructor()
, добавив private route: ActivatedRoute
в качестве аргумента в круглых скобках конструктора.
1 2 3 4 5 |
|
ActivatedRoute
специфичен для каждого компонента, который загружает Angular Router.
ActivatedRoute
содержит информацию о маршруте и параметрах маршрута.
Внедряя ActivatedRoute
, вы настраиваете компонент на использование сервиса.
Шаг Управление данными более подробно рассматривает сервисы.
4. В методе ngOnInit()
извлеките productId
из параметров маршрута и найдите соответствующий продукт в массиве products
.
1 2 3 4 5 6 7 8 9 10 |
|
Параметры маршрута соответствуют переменным пути, которые вы определяете в маршруте.
Для доступа к параметрам маршрута используется route.snapshot
, который представляет собой ActivatedRouteSnapshot
, содержащий информацию об активном маршруте в данный момент времени.
URL, соответствующий маршруту, содержит productId
.
Angular использует productId
для отображения подробностей о каждом уникальном продукте.
5. Обновите шаблон ProductDetailsComponent
для отображения информации о товаре с помощью *ngIf
.
Если товар существует, <div>
отображается с названием, ценой и описанием.
1 2 3 4 5 6 7 |
|
Строка <h4>{{ product.price | currency }}</h4>
использует пайп currency
для преобразования product.price
из числа в строку валюты.
Pipe
— это способ преобразования данных в шаблоне HTML.
Для получения дополнительной информации о пайпах Angular смотрите Пайпы.
Когда пользователи нажимают на название в списке продуктов, маршрутизатор переводит их на отдельный URL-адрес продукта, показывает компонент ProductDetailsComponent
и отображает подробную информацию о продукте.
Для получения дополнительной информации о маршрутизаторе Angular Router смотрите Маршрутизация и навигация.
Что дальше¶
Вы настроили свое приложение так, чтобы можно было просматривать подробную информацию о товарах, каждый из которых имеет свой URL.
Чтобы продолжить знакомство с Angular:
- Перейдите к разделу Управление данными, чтобы добавить функцию корзины, управлять данными корзины и получать внешние данные для цен доставки.
- Перейдите к Развертывание, чтобы развернуть ваше приложение на Firebase или перейти к локальной разработке.
28.02.2022