Angular 2 - Cadastro de Clientes - V
Neste artigo vou mostrar como criar um cadastro de clientes e fazer o CRUD usando o Angular 2 e o Visual Studio Code. |
No artigo anterior criamos o nosso o componente de detalhe do cliente e a respectiva página html.
Neste artigo vamos definir as rotas da nossa aplicação para poder permitir a navegação entre páginas e exibir a página de detalhe.
Usamos o roteamento para separar diferentes partes de nossa aplicação, e, geralmente (mas nem sempre) usamos um caminho informado na URL para denotar nossa localização. Ex: /login
Nota: Lembre-se que em aplicações SPA (Single Page Application) não temos um refresh da página mas alterações em partes da página que esta sendo alterada.
Existem
três componentes principais que usamos na configuração do roteamento no Angular:
- Routes - descreve as rotas da nossa aplicação que desejamos usar;
- RouterLink - é usado para vincular e navegar entre rotas;
- RouterOutlet - é um componente "marcador de posição" que se
expande para exibir o conteúdo de outras rotas;
Definindo o <base href> no arquivo index.html
O router (roteador) usa o history.pushState do navegador para navegação. Graças ao pushState, você pode fazer com que os caminhos das URLs no aplicativo se pareçam da forma como você deseja que eles sejam exibidos, ex: Localhost:3000/login-teste
Você deve adicionar um elemento <base href> no arquivo index.html da aplicação para que o roteamento pushState funcione. O navegador usa o valor href base para prefixar URLs relativas ao referenciar arquivos CSS, scripts e imagens.
Assim se
sua aplicação estiver rodando no endereço:
www.macoratti.net o href base vai criar
caminhos relativos; assim para ir para a página
www.macoratti.net/login basta
informar login.
Abra o arquivo index.html e adicione o elemento base href logo após a tag <head>.
Se a pasta app for a raiz do aplicativo, como no nosso caso, defina o
valor href em index.html exatamente como mostrado abaixo:(destacado em
azul)
<html>
<head>
<base href="/">
<title>Cadastro de Cliente</title>
<!-- Required meta tags always come first -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css">
....
....
....
</html>
|
Pronto, agora a url localhost:3000 esta roteada para /.
Criando rotas na aplicação com RouterModule
Para adicionar rotas em nossa aplicação, segundo o style guide do Angular, devemos criar um arquivo de Módulo.
Selecione a pasta app e crie o arquivo app-routing.module.ts. A nomenclatura do arquivo é definida assim : nome-do-modulo-routing.module.ts
A seguir inclua o seguinte código neste arquivo :
import { NgModule } from '@angular/core';
import { RouterModule, Routes} from '@angular/router'
const appRoutes : Routes = [
{
path: '',
redirectTo: '/cliente',
pathMatch: 'full'
}
]
@NgModule({
imports : [
RouterModule.forRoot(appRoutes)
],
exports: [
RouterModule
]
})
export class AppRoutingModule {}
|
Criamos a classe AppRoutingModel e importamos os módulos NgModule, RouterModule e Routes.
A seguir definimos um array de rotas - appRoutes - usando a classe Routes onde definimos a nossa rota:
const
appRoutes : Routes = [
{
path: '',
redirectTo: '/cliente',
pathMatch: 'full'
}
]
Aqui usamos o path para especificar a URL, no nosso caso , path: '', indica a raiz da nossa aplicação , no exemplo, localhot:3000/.
Depois usamos redirecTo: '/cliente' , para indicar para onde devemos ir quando acessarmos a raiz da aplicação. No exemplo estamos redirecionando para a rota /cliente.
Agora que
temos o array de rotas contendo a configuração de roteamento, podemos passar
essa matriz de configuração para o método RouterModule.forRoot(appRoutes).
Assim estamos informando que ao roteador para rotear a nossa aplicação
a partir do root (raiz) passando as rotas definidas.
Este método retorna um módulo Router que contém nossa configuração. A
chamada do método forRoot é colocada dentro do array imports
porque queremos importar o módulo resultante em AppRoutingModule.
Nota: O método forRoot() só deve ser usado para criar
RouteModules que são usados a nível de aplicativo (no AppModule).
Finalmente estamos exportando o nosso modulo RouterModule para que possamos usar esse roteamento na aplicação.
Agora que terminamos a definição do nosso módulo de roteamento temos que invocar esse módulo no módulo principal da aplicação que é o módulo AppModule.
Abra o arquivo app.module.ts e inclua o código abaixo, destacado em azul, no arquivo :
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { AppRoutingModule} from './app-routing.module';
import { ClientesModule } from './clientes/clientes.module';
@NgModule({
imports : [AppRoutingModule, BrowserModule, ClientesModule],
declarations :[AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
|
No código estamos importando a classe AppRoutingModule para poder usar o roteamento definido.
Ao testar a nossa aplicação veremos o seguinte resultado:
Observe que temos o erro : Cannot match any routes. URL Segment : 'cliente'.
Ou seja, não foi encontrada nenhuma correspondência para a rota 'cliente'.
Por quê ?
Porque não definimos uma rota cliente ainda.
Definimos uma rota que ao acessar localhot:3000 redireciona para /cliente.
Para que a aplicação volte a funcionar temos que definir a rota cliente, e, temos que fazer isso criando um outro arquivo de roteamento na pasta clientes.
No próximo artigo vamos continuar a definir as rotas da nossa aplicação.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
NET - Criando um livro de contatos usando o AngularJS - Macoratti
NET - AngularJS : Apresentação (início do curso) - Macoratti
ASP .NET MVC - Crud com Entity Framework e AngularJS - Macoratti
AngularJS - Conceitos Básicos - YouTube (série de 13 vídeo aulas sobre o Angular)
NET - O que é TypeScript e quais os seus benefícios - Macoratti
TypeScript - Configurando o VS Community 2015 para ... - Macoratti
Visual Studio - Bem-Vindo Node.js : desenvolvendo para Node.js na plataforma .NET