Angular 9
Tutorial atualizado para a versão 9.x do Angular em 27/05/2020.
Verificação dos pré-requisitos
Para trabalharmos com o Angular 9, será necessário que tenhamos instalado, primeiramente, o Node.js
e o Yarn
em suas versões corretas. Precisamos de:
Node.js
: versão >=12.16
Yarn
: versão >=1.22
Caso você já tenha o Node.js
e/ou o Yarn
instalados e deseje verificar a versão instalada, proceda da forma seguinte:
Em uma janela CMD, execute:
node --version
yarn --version
Em um terminal, execute:
node --version
yarn --version
Se não houver esses programas instalados ou se eles não estiverem nas versões mínimas necessárias, será necessário baixá-los e instalá-los.
Instalação do Node.js
- Download do instalador do
Node.js
. Prefira sempre a versão LTS. Siga as instruções de acordo com o seu sistema operacional e a respectiva plataforma.
Instalação do Yarn
Embora o Yarn possa ser instalado via download a partir do site oficial, é mais prático fazê-lo utilizando o gerenciador de pacotes do Node.js.
Em uma janela CMD, execute:
npm install -g yarn
Pode ser necessário fechar a janela do terminal e abri-la novamente para que o comando yarn
esteja disponível.
Em um terminal, execute:
sudo npm install -g yarn
Instalação do Angular
Trabalharemos com o Angular versão 9. Para instalá-lo:
Em uma janela CMD, execute:
npm install -g @angular/cli@latest
Pode ser necessário fechar a janela do terminal e abri-la novamente para que o comando ng
esteja disponível.
Em um terminal, execute:
sudo npm install -g @angular/cli@latest
Verifique a versão instalada:
Em uma janela CMD, execute:
ng --version
IMPORTANTE: caso você obtenha a mensagem
'ng' não é reconhecido como um comando interno ou externo, um programa operável ou um arquivo em lotes.
, será necessário adicionar manualmente ong
aoPATH
do Windows. Veja aqui como fazer isso.
Em um terminal, execute:
ng --version
A versão esperada do Angular CLI, em setembro de 2019, é, pelo menos, 8.3.5.
Configurando o Yarn como gerenciador de dependências
Por padrão, o Angular 9 utiliza o npm
como gerenciador de dependências. No entanto, o Yarn
oferece mais vantagens desempenhando esse papel. Para fazer com que o Angular 9 passe a utilizar o Yarn
como gerenciador de dependências, é necessário executar um comando de configuração.
Em uma janela CMD, execute:
ng config -g cli.packageManager yarn
Em um terminal, execute:
ng config -g cli.packageManager yarn
Criação do projeto Angular
O comando ng
é uma caixa de ferramentas que nos ajuda a trabalhar com o Angular. Uma de suas capacidades é a criação do projeto. Para a criação do projeto chamado front-end
, devemos executar, o comando a seguir.
Em uma janela CMD, execute:
ng new front-end --minimal --routing --skip-install
Em um terminal, execute:
ng new front-end --minimal --routing --skip-install
Note que adicionamos algumas opções ao comando básico de criação de projetos, que é ng new <nome-projeto>
. Vamos às explicações:
--minimal
: isso desabilita os frameworks de teste de código. Esse é um tópico avançado, que será útil apenas após o aprendizado básico do Angular 9.--routing
: assim como os projetos Express, o Angular também trabalha com rotas. Essa opção cria um módulo de código onde poderemos configurar nossas rotas mais facilmente.--skip-install
: normalmente, logo após a criação dos arquivos de projeto, o comandong new
já instalaria todas as dependências presentes no arquivopackage.json
do novo projeto. No entanto, para nos certificarmos de que o Yarn será usado para o gerenciamento das dependências, faremos isso mais adiante.
A execução do comando de criação do projeto fará algumas perguntas.
Which stylesheet format would you like to use?
(Use arrow keys)
. Responda SCSS
.
Essa etapa do processo é bem rápida. Em suma, ela irá criar uma nova pasta chamada front-end
com alguns arquivos e pastas dentro.
Prosseguindo, precisamos entrar dentro dessa nova pasta criada e, agora sim, instalar as dependências do projeto. Para isso:
Em uma janela CMD, execute:
cd front-end
yarn install
Em um terminal, execute:
cd front-end
yarn install
O comando yarn instal
l passará a baixar as dependências do projeto e a instalá-las. ESSE PROCESSO É UM POUCO DEMORADO, dependendo da sua conexão de Internet. Tenha um pouco de paciência.
Se o processo de instalação de pacotes falhar (o que é relativamente comum, se a qualidade da conexão da Internet não for das melhores), NÃO ENTRE EM PÂNICO. Basta executar yarn install
novamente.
Trocando em miúdos, simplesmente estamos fazendo com que o processo de download e instalação de dependências seja iniciado novamente.
Executando o projeto Angular
O comando anterior terá criado uma pasta chamada front-end
com vários arquivos dentro dela. Portanto, de agora em diante, para trabalharmos como esse projeto, precisaremos estar dentro dessa pasta. No terminal:
Em uma janela CMD, execute:
cd front-end
Em um terminal, execute:
cd front-end
O comando ng new
, que executamos no passo anterior, gera um projeto Angular funcional. Para vê-lo, execute o seguinte comando no terminal:
Em uma janela CMD, execute:
ng serve
Em um terminal, execute:
ng serve
Esse comando irá compilar o projeto (demora um pouco na primeira execução). Ao final, abra seu navegador no endereço http://localhost:4200. Você verá a página padrão do projeto semelhante a essa:
Adicionando os componentes Angular Material ao projeto
Os componentes Angular Material foram desenvolvidos segundo as diretrizes do Material Design do Google. Utilizando esses componentes, nosso projeto terá uma série de benefícios, como a padronização da interface e a habilidade de deixar a aplicação “pronta” para ambientes mobile.
Para adicionar a biblioteca de componentes ao projeto, execute o comando abaixo no terminal:
Em uma janela CMD, execute:
ng add @angular/material
Em um terminal, execute:
ng add @angular/material
Esse comando também faz algumas perguntas. Responda conforme o modelo abaixo.
? Choose a prebuilt theme name, or "custom" for a custom theme: (Use arrow keys)
Com a seta, escolha uma das opções. As duas primeiras são temas claros e as duas últimas, temas escuros.? Set up global Angular Material typography styles? (Y/n)
Responda Y.? Set up browser animations for Angular Material? (Y/n)
Responda Y.
Instalando a biblioteca de ícones Material Icons
No terminal:
Em uma janela CMD, execute:
yarn add material-design-icons --network-timeout 1000000000
Em um terminal, execute:
yarn add material-design-icons --network-timeout 1000000000
Há relatos de que a execução desse comando é demorada. É por isso que aumentamos o tempo de expiração da rede (
--network-timeout
).
Abra o arquivo src/styles.scss
e acrescente a seguinte linha no início:
/* Acrescente a linha a seguir */
@import "~material-design-icons/iconfont/material-icons.css";
Adicionando um módulo para os componentes do Angular Material
Os componentes Angular Material são frequentemente utilizados, e, como qualquer componente da plataforma, precisam ser importados dentro de um módulo para funcionar.
Para evitar importar esses componentes um a um, é mais prático criar um módulo com todos os componentes do Angular Material e importá-los todos de uma vez para dentro do projeto.
Para tanto, gere um módulo vazio:
Em uma janela CMD, execute:
ng generate module material
Em um terminal, execute:
ng generate module material
Abra o arquivo src/app/material/material.module.ts
e substitua seu conteúdo pelo código seguinte:
import { NgModule } from '@angular/core';
//Angular Material Components
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatButtonModule } from '@angular/material/button';
import { MatInputModule } from '@angular/material/input';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatRadioModule } from '@angular/material/radio';
import { MatSelectModule } from '@angular/material/select';
import { MatSliderModule } from '@angular/material/slider';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatMenuModule } from '@angular/material/menu';
import { MatSidenavModule } from '@angular/material/sidenav';
import { MatToolbarModule } from '@angular/material/toolbar';
import { MatListModule } from '@angular/material/list';
import { MatGridListModule } from '@angular/material/grid-list';
import { MatCardModule } from '@angular/material/card';
import { MatStepperModule } from '@angular/material/stepper';
import { MatTabsModule } from '@angular/material/tabs';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatButtonToggleModule } from '@angular/material/button-toggle';
import { MatChipsModule } from '@angular/material/chips';
import { MatIconModule } from '@angular/material/icon';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { MatDialogModule } from '@angular/material/dialog';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { MatTableModule } from '@angular/material/table';
import { MatSortModule } from '@angular/material/sort';
import { MatPaginatorModule } from '@angular/material/paginator';
@NgModule({
exports: [
MatCheckboxModule,
MatCheckboxModule,
MatButtonModule,
MatInputModule,
MatAutocompleteModule,
MatDatepickerModule,
MatFormFieldModule,
MatRadioModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatMenuModule,
MatSidenavModule,
MatToolbarModule,
MatListModule,
MatGridListModule,
MatCardModule,
MatStepperModule,
MatTabsModule,
MatExpansionModule,
MatButtonToggleModule,
MatChipsModule,
MatIconModule,
MatProgressSpinnerModule,
MatProgressBarModule,
MatDialogModule,
MatTooltipModule,
MatSnackBarModule,
MatTableModule,
MatSortModule,
MatPaginatorModule
]
})
export class MaterialModule { }
Agora abra o arquivo src/app/app.module.ts
e acrescente APENAS as linhas indicadas nos comentários (NÃO SUBSTITUA O CONTEÚDO DO ARQUIVO!!!):
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; // **** ACRESCENTE A LINHA ABAIXO *** import { MaterialModule } from './material/material.module'; @NgModule({ declarations: [AppComponent], imports: [ BrowserModule, BrowserAnimationsModule, // **** ACRESCENTE A LINHA ABAIXO E UMA VÍRGULA NA LINHA DE CIMA *** MaterialModule ], providers: [], bootstrap: [AppComponent] }); export class AppModule { }
PRONTO! Agora todos os componentes Angular Material já podem ser utilizados no projeto.