Angular-Loiane-Training

Este repositorio contem exemplos documentados e descricoes dos conteudos estudados ao longo do curso de Angular da Loiane

View project on GitHub

Criacao Modulo de Rotas de Funcionalidades

A organizacao das rotas em modulos ocorre de forma similar ao documentado em Criacao Modulo de Funcionalidades, vamos aproveitar a mesma estrutura de pastas e adicionar os modulos de rotas respectivos a cada modulo. note que cursos.routing.module.ts foi adicionado a estrutura.

cursos
  |
  |-- cursos.component.ts
  |-- cursos.component.html
  |-- cursos.component.css
  |-- cursos-service.service.ts
  |
  |-- curso-detalhe
  |         |
  |         |- curso-detalhe.component.ts
  |         |- curso-detalhe.component.html
  |         |- curso-detalhe.component.css
  |         
  |- curso-nao-encontrado
  |         |
  |         |-- curso-nao-encontrado.component.ts
  |         |-- curso-nao-encontrado.component.html
  |         |-- curso-nao-encontrado.component.css
  |
  |
  |-- cursos.module.ts
  |-- cursos.routing.module.ts

para os modulos de roteamento, nao e necessario exportar a classe RouterModule em todos os modulos, apenas no modulo raiz, portanto basta importar as rotas por meio da classe RouterModule utilizando o metodo forChild() (pois se tratam de rotas filhas para a aplicacao, lembre-se que o metodo forRoot() e forChild retorna um objeto do tipo ModuleWithProviders).

  • Modulo de cursos
import { CursoNaoEncontradoComponent } from './curso-nao-encontrado/curso-nao-encontrado.component';
import { CursoDetalheComponent } from './curso-detalhe/curso-detalhe.component';
import { CursosRotasComponent } from './cursos.component';
import { Routes, RouterModule } from '@angular/router';

import { NgModule } from "@angular/core";

const CURSOS_ROUTES: Routes = [
  { path: 'cursos', component: CursosRotasComponent },
  { path: 'curso/:id', component: CursoDetalheComponent },
  { path: 'nao-encontrado', component: CursoNaoEncontradoComponent }
]

@NgModule({
  imports: [RouterModule.forChild(CURSOS_ROUTES)],
})
export class CursosRoutingModule {}

seguindo a estrutura de diretorios, observe que o arquivo rotas.routing.module.ts foi adicionado a estrutura.

_06-rotas
    |
    |-- rotas
    |     |
    |     |-- cursos
    |     |     |
    |     |     |-- cursos.component.ts
    |     |     |-- cursos.component.html
    |     |     |-- cursos.component.css
    |     |     |-- cursos-service.service.ts
    |     |     |
    |     |     |-- curso-detalhe
    |     |     |         |
    |     |     |         |- curso-detalhe.component.ts
    |     |     |         |- curso-detalhe.component.html
    |     |     |         |- curso-detalhe.component.css
    |     |     |         
    |     |     |- curso-nao-encontrado
    |     |     |         |
    |     |     |         |-- curso-nao-encontrado.component.ts
    |     |     |         |-- curso-nao-encontrado.component.html
    |     |     |         |-- curso-nao-encontrado.component.css
    |     |     |
    |     |     |
    |     |     |-- cursos.module.ts
    |     |
    |     |
    |     |-- home
    |     |     |
    |     |     |-- home.component.ts
    |     |     |-- home.component.html
    |     |     |-- home.component.css
    |     |     
    |     |-- login
    |          |
    |          |-- login.component.ts
    |          |-- login.component.html
    |          |-- login.component.css
    |
    |-- rotas.module.ts   
    |-- rotas.routing.module.ts

como as rotas relativas os components de cursos estao organizadas em cursos.routing.module.ts, basta apenas inclui-lo no meta-dado de imports, e as demais rotas podem ser declaradas normalmente.

import { NgModule } from "@angular/core";
import { RouterModule, Routes } from '@angular/router';
import { CursosRoutingModule } from './rotas/cursos/cursos.routing.module';
import { HomeComponent } from './rotas/home/home.component';
import { LoginComponent } from './rotas/login/login.component';

const ROTAS_ROUTES: Routes = [
  { path: '', component: HomeComponent },
  { path: 'login', component: LoginComponent },
]

@NgModule({
  imports: [
    RouterModule.forChild(ROTAS_ROUTES),
    CursosRoutingModule
  ]
})
export class RotasRoutingModule {}

e por fim importar rotas.routing.module.ts no modulo de rotas raiz app.routing.module.ts

import { RotasRoutingModule } from './_06-rotas/rotas.routing.module';
import { NgModule } from "@angular/core";
import { RouterModule, Routes } from '@angular/router';

const APP_ROUTES: Routes = [

]

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