Роутинг приложения. Первое приложение Angular

Чтобы объяснить как это работает проще перейти сразу к примера.

Для начала при помощи команды ng generate создадим пару страниц:

  • home
  • about
  • news
  • price
  • notfound
ng generate component [имя страницы]

После этого все модули автоматически будут привязаны в файле app.modules.ts


Далее создаем файл app-routing.module.ts (если он есть, то просто нужно добавить некоторые строчки)

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router'; (1)

import { HomeComponent } from './home/home.component'; (2)
import { AboutComponent } from './about/about.component';
import { NewsComponent } from './news/news.component';
import { PriceComponent } from './price/price.component';
import { NotFoundComponent } from './not-found/not-found.component';

const routes: Routes = [ (3)
{
path: '',
component: HomeComponent
},
{
path: 'about',
component: AboutComponent
},
{
path: 'news',
component: NewsComponent
},
{
path: 'price',
component: PriceComponent
},
{
path: '**',
component: NotFoundComponent
}
];

@NgModule({
imports: [RouterModule.forRoot(routes)], (4)
exports: [RouterModule]
})
export class AppRoutingModule { }

Импортируем модуль @angular/router (1), указываем ссылки на компоненты (страницы), которые нужны для router (2). Далее при помощи синтаксиса

{
path: '', // имя пути в адресной строке, например home
component: NameComponent // тут указывается импортированный компонет для router
}

Если в пути (path) указывать **, то это означает, что данный компонент будет обрабатывать все запросы которые не указаны в routes (3). И в завершении набор routers добавляется в модуль (4).

В файле app.module.ts импортируем нашу зависимость.

 import { AppRoutingModule } from './app-routing.module'; 

После чего добавляем его в @NgModule

@NgModule({
...
imports: [
...
AppRoutingModule
],
...
})

Для вывода содержимого каждого компонента, нужно в app.component.html указать следующий код

<div>
<h1>Angular routes</h1>
<nav>
<a routerLink="">Главная</a> (5)
<a routerLink="/about">О нас</a>
<a routerLink="/news">Новости</a>
<a routerLink="/price">Цена</a>
</nav>
<router-outlet></router-outlet> (6)
</div>
<app-date></app-date>

Здесь компонет route-outlet (6) предназначен для вывода содержимого у компонентов, которые ранее были зарегистрированы в routes (3).

По идеи на этом можно уже остановиться, т.к. после запуска приложения

ng serve -o

роутинг уже будет работать. Но…

Для создания динамического приложения (SPA) лучше осуществлять переходы через специальный синтаксис (5). В этом случаи при переходе у Вас не будет обновляться страница браузера, а отображение будет динамическим

video
play-sharp-fill
Print Friendly, PDF & Email

Добавить комментарий