Во второй части руководства для начинающих по учебному пособию по Angular вы узнали, что такое сервисы в Angular 4 и как писать сервисы Angular и использовать их в компоненте Angular.
В этой части серии руководств вы узнаете, как обрабатывать маршрутизацию в Angular 4.
Начиная
Вы начнете с клонирования исходного кода из первой части серии уроков.
1
|
git clone https://github.com/royagasthyan/AngularComponent.git
|
Получив исходный код, перейдите в каталог проекта и установите необходимые зависимости.
1
2
|
cd AngularComponent
npm install
|
После установки зависимостей запустите приложение, введя следующую команду:
1
|
ng serve
|
Приложение должно быть запущено по адресу http: // localhost: 4200 / .
Маршрутизация и навигация
Когда пользователь входит в веб-приложение или веб-сайт, маршрутизация является средством навигации по всему приложению. Чтобы перейти от одного просмотра к другому, пользователь нажимает на доступные ссылки на странице.
Angular предоставляет Маршрутизатор, чтобы упростить определение маршрутов для веб-приложений и переходить из одного представления в другое представление в приложении.
Создание вашего первого маршрута
Для реализации маршрутизации в веб-приложении вы будете использовать модуль угловой маршрутизации. Создайте файл с именем app.routing.ts
в папке src/app
.
Чтобы начать реализацию маршрутизации, вам необходимо импортировать RouterModule
и Routes
из @ angular / router.
1
|
import { RouterModule, Routes } from ‘@angular/router’;
|
Вам также понадобится модуль ModuleWithProviders
для реализации маршрутизации.
1
|
import { ModuleWithProviders } from ‘@angular/core/src/metadata/ng_module’;
|
Создайте и экспортируйте переменную с именем AppRoutes
в AppRoutes
, которая будет коллекцией всех маршрутов внутри приложения Angular.
1
|
export const AppRoutes: Routes = [];
|
Существует два способа создания модуля маршрутизации: RouterModule.forRoot
и RouterModule.forChild
.
RouterModule.forRoot
предназначен для создания маршрутов для всего приложения, а RouterModule.forChild
— для создания маршрутов для лениво загруженных модулей.
В этом руководстве вы будете использовать RouterModule.forRoot
для создания маршрутов для корневого приложения.
Создайте модуль маршрутизации с помощью RouterModule.forRoot
внутри файла RouterModule.forRoot
.
1
|
export const ROUTING: ModuleWithProviders = RouterModule.forRoot(AppRoutes);
|
Добавьте маршрут в список AppRoutes
чтобы показать наш CalcComponent
.
1
|
{ path: ‘calc’, component: CalcComponent }
|
Вот как выглядит файл app.routing.ts
:
1
2
3
4
5
6
7
8
9
|
import { RouterModule, Routes } from ‘@angular/router’;
import { ModuleWithProviders } from ‘@angular/core/src/metadata/ng_module’;
import { CalcComponent } from ‘./calc/calc.component’
export const AppRoutes: Routes = [
{ path: ‘calc’, component: CalcComponent }
];
export const ROUTING: ModuleWithProviders = RouterModule.forRoot(AppRoutes);
|
Как видно из кода, добавленный маршрут — /calc
, который будет отображать CalcComponent
.
Импортируйте константу app.module.ts
файл app.module.ts
.
1
|
import { ROUTING } from ‘./app.routing’
|
Добавьте ROUTING
в раздел импорта.
1
2
3
4
5
|
imports: [
BrowserModule,
FormsModule,
ROUTING
],
|
Вот как app.module.ts
файл app.module.ts
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import { BrowserModule } from ‘@angular/platform-browser’;
import { NgModule } from ‘@angular/core’;
import { ROUTING } from ‘./app.routing’
import { AppComponent } from ‘./app.component’;
import { CalcComponent } from ‘./calc/calc.component’
import { FormsModule } from ‘@angular/forms’;
import { RouterModule } from ‘@angular/router’;
@NgModule({
declarations: [
AppComponent,
CalcComponent
],
imports: [
BrowserModule,
FormsModule,
ROUTING
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
|
Сохраните вышеуказанные изменения и перезапустите приложение Angular, используя ng serve
.
Укажите в браузере http: // localhost: 4200 / calc, и у вас отобразится CalcComponent
.
Реализация навигации
С помощью созданного выше маршрута вы попытаетесь реализовать навигацию. Давайте начнем с создания основного компонента для нашего приложения под названием HomeComponent
.
Создайте папку с именем home
внутри папки src/app
. Внутри home
папки создайте файл с именем home.component.ts
. Вот как это выглядит:
1
2
3
4
5
6
7
8
9
|
import { Component } from ‘@angular/core’;
@Component({
selector: ‘home’,
templateUrl: ‘home.component.html’
})
export class HomeComponent {
}
|
Создайте файл шаблона с именем home.component.html
. Добавьте следующий код к нему:
1
2
3
4
5
6
7
|
<h2>
Welcome to Home Page
</h2>
<nav>
<a routerLink=»/calc» routerLinkActive=»active»>Go to Calc</a>
</nav>
|
Как видно из приведенного выше кода, вы использовали routerLink
для настройки навигации по routerLink
. routerLink
импортируется из RouterModule
.
Добавьте NgModule
к app.module.ts
файле app.module.ts
.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import { BrowserModule } from ‘@angular/platform-browser’;
import { NgModule } from ‘@angular/core’;
import { ROUTING } from ‘./app.routing’
import { AppComponent } from ‘./app.component’;
import { CalcComponent } from ‘./calc/calc.component’;
import { HomeComponent } from ‘./home/home.component’;
import { FormsModule } from ‘@angular/forms’;
import { RouterModule } from ‘@angular/router’;
@NgModule({
declarations: [
AppComponent,
CalcComponent,
HomeComponent
],
imports: [
BrowserModule,
FormsModule,
ROUTING
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
|
Поскольку вы будете использовать угловую маршрутизацию, вам нужно отобразить место в нашем приложении, где маршрутизатор будет отображать представления. Поскольку вы загрузили AppComponent
во время выполнения, добавьте следующий код в файл app.component.html
.
1
|
<router-outlet></router-outlet>
|
Розетка маршрутизатора сообщает Angular router, где отображать виды.
В файле app.routing.ts
укажите маршрут по умолчанию, который будет отображаться как HomeComponent
. Вот как выглядит модифицированный код:
1
|
{ path: », component: HomeComponent }
|
Вот как выглядит файл app.routing.ts
:
01
02
03
04
05
06
07
08
09
10
11
|
import { RouterModule, Routes } from ‘@angular/router’;
import { ModuleWithProviders } from ‘@angular/core/src/metadata/ng_module’;
import { CalcComponent } from ‘./calc/calc.component’;
import { HomeComponent } from ‘./home/home.component’;
export const AppRoutes: Routes = [
{ path: », component: HomeComponent },
{ path: ‘calc’, component: CalcComponent }
];
export const ROUTING: ModuleWithProviders = RouterModule.forRoot(AppRoutes);
|
Сохраните вышеуказанные изменения и перезапустите веб-приложение. Направьте ваш браузер на http: // localhost: 4200 /, и у вас будет HomeComponent
отображаемый по умолчанию.
Нажмите на ссылку в домашнем компоненте, и вы перейдете к компоненту калькулятора.
Теперь давайте добавим маршрут для обработки неопределенных запросов маршрутизации. Всякий раз, когда пользователь переходит на несуществующий маршрут, вы увидите сообщение, что маршрут не найден.
Добавьте новый компонент с именем notfound
. Создайте папку с именем notfound
внутри папки src/app
. Создайте файл с именем notfound.component.ts
. Добавьте следующий код:
01
02
03
04
05
06
07
08
09
10
|
import { Component } from ‘@angular/core’;
@Component({
selector: ‘notfound’,
templateUrl: ‘notfound.component.html’,
styleUrls: [‘notfound.component.css’]
})
export class NotFoundComponent {
}
|
Создайте файл с именем notfound.component.html
и добавьте следующий код:
1
2
3
|
<h3>
Component not found
</h3>
|
Вы будете добавлять маршрутный символ для обработки несуществующих маршрутов. Добавьте следующий код в файл app.routing.ts
:
1
|
{ path: ‘**’, component: NotFoundComponent }
|
Вот как app.routing .ts
файл app.routing .ts
:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
import { RouterModule, Routes } from ‘@angular/router’;
import { ModuleWithProviders } from ‘@angular/core/src/metadata/ng_module’;
import { CalcComponent } from ‘./calc/calc.component’;
import { HomeComponent } from ‘./home/home.component’;
import { NotFoundComponent } from ‘./notfound/notfound.component’;
export const AppRoutes: Routes = [
{ path: », component: HomeComponent },
{ path: ‘calc’, component: CalcComponent },
{ path: ‘**’, component: NotFoundComponent }
];
export const ROUTING: ModuleWithProviders = RouterModule.forRoot(AppRoutes);
|
Сохраните вышеуказанные изменения и перезагрузите сервер. Укажите в браузере адрес http: // localhost: 4200 / abc, и вы увидите сообщение об исключении, которое не найдено.
Завершение
В этом уроке вы узнали основы того, как обрабатывать маршрутизацию в Angular. Вы узнали, как определить маршрут и перемещаться по приложению Angular.
Вы узнали, как обрабатывать несуществующие маршруты, определяя подстановочный маршрут. Вы узнали, как использовать routerLink
для связи с другим маршрутом.
Каким был ваш опыт изучения Angular Routing? Дайте нам знать ваши мысли и предложения в разделе комментариев ниже.
Исходный код из этого урока доступен на GitHub .