меню

Хорошим тоном считается выносить конфиг роутера в отдельный файл. Для этого создадим файл app-routing.module.ts и перенесем в него конфиг из app.module.ts:

  
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { UsersComponent } from './users/users.component';
import { ServersComponent } from './servers/servers.component';
import { UserComponent } from './users/user/user.component';
import { EditServerComponent } from './servers/edit-server/edit-server.component';
import { ServerComponent } from './servers/server/server.component';
import { Page404Component } from './page404/page404.component';

const appRoutes: Routes = [
  {path: '', component: HomeComponent},
  {path: 'users', component: UsersComponent, children: [
    {path: ':id/:name', component: UserComponent},
  ]},
  {path: 'servers', component: ServersComponent, children: [
    {path: ':id', component: ServerComponent},
    {path: ':id/edit', component: EditServerComponent},
  ]},
  {path: 'page404', component: Page404Component},
  {path: '**', redirectTo: '/page404'},
];

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

В декораторе @NgModule не нужно импортировать эти классы, т.к. они уже импортированы в app.module.ts, который сейчас выглядит так:

 
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { Routes, RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { UsersComponent } from './users/users.component';
import { ServersComponent } from './servers/servers.component';
import { UserComponent } from './users/user/user.component';
import { EditServerComponent } from './servers/edit-server/edit-server.component';
import { ServerComponent } from './servers/server/server.component';
import { ServersService } from './servers/servers.service';
import { Page404Component } from './page404/page404.component';
import { AppRoutingModule } from './app-routing.module';

@NgModule({
declarations: [
  AppComponent,
  HomeComponent,
  UsersComponent,
  ServersComponent,
  UserComponent,
  EditServerComponent,
  ServerComponent,
  Page404Component
],
imports: [
  BrowserModule,
  FormsModule,
  HttpModule,
  AppRoutingModule
],
providers: [ServersService],
bootstrap: [AppComponent]
})
export class AppModule { }
  

Следует обратить внимание, на то, что в файле app-routing.module.ts мы экспортируем RouterModule:

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

А в файле app.module.ts задан импорт AppRoutingModule:

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

Возможно, вам будет интересно

Компонент и модель

Angilar создание обычных и вложенных компонентов через CLI. Описание модели.

JavaScript операторы

JavaScript операторы, которые важно знать для работы с Angular

Навигация. Передача данных событиями

Навигация в Angular на основе событий. Передача данных между вложенными компонентами с помощью событий в Angular

HostListener и HostBinding

Использование декораторов HostListener и HostBinding для реагирования на события и работы со стилями в Angular

Оформление заявки

Документы на создание сайта

Изучите наше коммерческое предложение, заполните БРИФ и отправьте его на почту maxidebox@list.ru. Изучив все пожелания из БРИФ-а, обратным ответом оповестим Вас по стоимости разработке, ответим на вопросы.

КП на создание сайта Коммерческое предложение на созданеи сайта

Мы берем на себя ответственность за все стадии работы и полностью избавляем клиентов от забот и необходимости вникать в тонкости.

Скачать БРИФ (акета) на создание сайта Скачать БРИФ (акета) на создание сайта

Зополните у БРИФ-а все необходимые поля. Сделайте краткое описание к каждому из пунктов анкеты, привидите примеры в соответсвующий пунктах - это позволит лучше понять Ваши ожидания и требования к сайту