SlideShare uma empresa Scribd logo
Angular 2
Loiane Groner
github.com/loiane
loiane.com
loiane.training
@loiane
em 60 minutos
• 10+ XP TI
• Java, JavaScript, Sencha, Angular
Phonegap/Ionic
• Blog: http://loiane.com
• Cursos: http://loiane.training
• Meus livros:
!==
Angular 2 em 60 minutos
Angular 2 em 60 minutos
Angular 2 em 60 minutos
TYPESCRIPT
TypeScript
ECMAScript 6
ECMAScript 5
ES 2015
Novembro 2009
meu-script.ts
transpiler
meu-script.js
ES5
Classes e Módulos
ECMAScript 7
ES 2016
Decorators e Async
Tipagem de dados, interfaces
Angular 2 em 60 minutos
O QUE PRECISAMOS INSTALAR
https://nodejs.org
TYPESCRIPT
https://www.typescriptlang.org/
TYPESCRIPT
$ npm install -g typescript
$ sudo npm install -g typescript
SOMENTE MAC OU LINUX
> npm install -g angular-cli
> ng new meu-projeto
> cd meu-projeto
> ng serve
> ng build
> ng test
> ng e2e
> ng deploy
Editores/ IDEs
COMPONENTES DIRETIVAS
ROTEAMENTOSERVIÇOS
TEMPLATE
DATA BINDINGINJEÇÃO
DEPENDÊNCIA
MÓDULOS
Blocos Principais
COMPONENTE
{…}
TEMPLATE
<..>
COMPONENTE
{…}
TEMPLATE
<..>
Binding de
Propriedades
COMPONENTE
{…}
TEMPLATE
<..>
Binding de
Propriedades
Binding de
Eventos
COMPONENTE
{…}
TEMPLATE
<..>
DIRETIVAS
{..}
Binding de
Propriedades
Binding de
Eventos
COMPONENTE
{…}
TEMPLATE
<..>
DIRETIVAS
{..}
SERVIÇOS
SERVIÇO A
SERVIÇO B
Binding de
Propriedades
Binding de
Eventos
COMPONENTE
{…}
TEMPLATE
<..>
DIRETIVAS
{..}
SERVIÇOS
SERVIÇO A
SERVIÇO B MÓDULO X
MÓDULO A
MÓDULO B
Binding de
Propriedades
Binding de
Eventos
Módulos
Angular 2 em 60 minutos
Imports das classes
Angular 2 em 60 minutos
Declaração dos
Components, Directives, Pipes que
queremos usar no projeto
Declaração dos
Components, Directives, Pipes que
queremos usar no projeto
Import dos Módulos que
serão usados por esse módulo
Declaração dos
Components, Directives, Pipes que
queremos usar no projeto
Import dos Módulos que
serão usados por esse módulo
Componente principal
da aplicação
Angular 2 em 60 minutos
Também podemos ter
módulo de funcionalidade
pra ajudar a organizar o
projeto
Também podemos ter
módulo de funcionalidade
pra ajudar a organizar o
projeto
Fornecedores de serviços
Admin
Usuários
Permissões
Shared/Common
Validações
Pipes
Produtos
ProdutosPainel
ProdutoLista
ProdutoDetalhe
ProdutoForm
Clientes
ClientesPainel
ClienteLista
ClienteDetalhe
ClienteForm
Vendas
VendasPainel
VendaLista
VendaDetalhe
VendaForm
VendaProdutosForm
Relatórios
RelatorioPrincipal
RelatorioClientes
RelatorioBuscaClientes
RelatorioProdutos
RelatorioBuscaProdutos
RelatorioVendas
RelatorioBuscaVendas
ExportarExcel
ExportarPDF
Raiz
AppComponent
NavBar
Menu
Componentes
Passo 1: Criar e Declarar Componente
Passo 1: Criar e Declarar Componente
Passo 1: Criar e Declarar Componente
Passo 1: Criar e Declarar Componente
Nome da tag a ser
utilizada
Passo 2: Importar e Declarar no módulo (e exportar caso queira
expor a outros módulos
Passo 3: Usar a tag do Componente criado
Passo 3: Usar a tag do Componente criado
Angular 2 em 60 minutos
Templates
Template contém o HTML que será renderizado
Pode ser declarado inline (no próprio componente)
Pode ser declarado inline (no próprio componente)
Ou num arquivo separado
Ou num arquivo separado
Estilizando componentes/
templates
Angular 2 em 60 minutos
Data
Binding
DATA BINDING
<TEMPLATE>
{COMPONENT}
DATA BINDING
<TEMPLATE>
{COMPONENT}
{{ valor }}
DATA BINDING
<TEMPLATE>
{COMPONENT}
{{ valor }}
[propriedade]="valor"
DATA BINDING
<TEMPLATE>
{COMPONENT}
{{ valor }}
[propriedade]="valor"
(evento)="handler"
DATA BINDING
<TEMPLATE>
{COMPONENT}
{{ valor }}
[propriedade]="valor"
(evento)="handler"
[(ngModel)]="propriedade"
#1: Interpolação
#1: Interpolação
#1: Interpolação
#2: Binding de propriedades (property binding)
#2: Binding de propriedades (property binding)
Todas as imagens tem o
mesmo resultado
#3: Class binding (também é property binding)
#3: Class binding (também é property binding)
Variável local
chamada class
#3: Class binding (também é property binding)
Variável local
chamada class
Property binding
#4: Style binding (também é property binding)
#4: Style binding (também é property binding)
Mostra o estilo
ou não?
#4: Style binding (também é property binding)
Mostra o estilo
ou não?
Expressão com o
valor da variável
#5: Event binding (binding de evento)
#5: Event binding (binding de evento)
Evento a ser
"escutado"
#5: Event binding (binding de evento)
Evento a ser
"escutado"
Método/Função a
ser executada
#5: Event binding (binding de evento)
Evento a ser
"escutado"
Método/Função a
ser executada
#5: Event binding (binding de evento)
Evento a ser
"escutado"
Método/Função a
ser executada
Como manter o template e o
componente atualizados?
Como manter o template e o
componente atualizados?
Como manter o template e o
componente atualizados?
Como manter o template e o
componente atualizados?
Property binding +
event binding
Como manter o template e o
componente atualizados?
#6: Binding de Model (two-way data-binding)
#6: Binding de Model (two-way data-binding)
#6: Binding de Model (two-way data-binding)
Two-way
data binding com
NgModel
Diretivas
TEXT
TIPOS DE DIRETIVAS
DIRETIVAS ESTRUTURAIS
Interagem com a view e
modificam a estrutura do DOM
e/ou código HTML
*ngFor
*ngIf
TEXT
TIPOS DE DIRETIVAS
DIRETIVAS ESTRUTURAIS
Interagem com a view e
modificam a estrutura do DOM
e/ou código HTML
*ngFor
*ngIf
DIRETIVAS DE ATRIBUTOS
Interagem com o elemento em
que foram aplicadas
ng-class
ng-style
Condicional If: JavaScript
Diretiva *ngIf
Loop for: JavaScript
Diretiva *ngFor
Property binding de classe
Diretiva ngClass
Criando uma diretiva customizada
Usando a diretiva
E como os componentes se comunicam?
Componente parente <-> filho?
Comunicação parente -> filho através de @Input()
Comunicação parente -> Filho através de @Input()
Comunicação parente -> Filho através de @Input()
2 - Usamos a anotação @Input nos atributos que
queremos expor
Comunicação filho -> parente através de @Output()
Comunicação filho -> parente através de @Output()
Emitimos o evento
"clicked"
Com @Output podemos escutar eventos customizados
Com @Output podemos escutar eventos customizados
Serviços
Passo 1: Criar uma classe com métodos!
Passo 1: Criar uma classe com métodos!
Injeção de
Dependência
Passo 2: Decorar a classe
Passo 2: Decorar a classe
Importar
Passo 3: Importar e registrar como
fornecedor de dados no módulo
Passo 3: Importar e registrar como
fornecedor de dados no módulo
Importar
Passo 4: Importar e passar o serviço para o construtor da classe
Passo 4: Importar e passar o serviço para o construtor da classe
Importar
Angular 2 em 60 minutos
Passo 1: Importar e Injetar na classe (serviço)
Passo 1: Importar e Injetar na classe (serviço)
Importar
Não esquecer de ter o módulo Http importado no módulo
também
Não esquecer de ter o módulo Http importado no módulo
também
Importar o
módulo
Só usar os métodos get, post, put e delete!
Exemplo CRUD com REST
Upload Arquivo
https://github.com/angular/http/issues/75
Por enquanto: upload de arquivo "na mão"
Angular 2 em 60 minutos
Coisa linda!
Coisa linda!
fluxos:
.do
.map
.filter
.when
.add
Coisa linda!
fluxos:
.do
.map
.filter
.when
.add
Programação reativa!
No componente é só se inscrever no Observador (Observable)
LIFE CYCLE HOOKS
# EVENTO (HOOKS) QUANDO?
ngOnChanges1 antes #2 e quando valor property-binding é atualizado
LIFE CYCLE HOOKS
# EVENTO (HOOKS) QUANDO?
ngOnChanges1 antes #2 e quando valor property-binding é atualizado
ngOnInit2 quando Component é inicializado
LIFE CYCLE HOOKS
# EVENTO (HOOKS) QUANDO?
ngOnChanges1 antes #2 e quando valor property-binding é atualizado
ngOnInit2 quando Component é inicializado
ngDoCheck3 a cada ciclo de verificação de mudanças
ngAfterContentInit4 depois de inserir conteúdo externo na view
ngAfterContentChecked5 a cada verificação de conteúdo inserido
ngAfterViewChecked6 a cada verificação de conteúdo / conteúdo filho
LIFE CYCLE HOOKS
# EVENTO (HOOKS) QUANDO?
ngOnChanges1 antes #2 e quando valor property-binding é atualizado
ngOnInit2 quando Component é inicializado
ngDoCheck3 a cada ciclo de verificação de mudanças
ngAfterContentInit4 depois de inserir conteúdo externo na view
ngAfterContentChecked5 a cada verificação de conteúdo inserido
ngAfterViewChecked6 a cada verificação de conteúdo / conteúdo filho
ngOnDestroy7 antes da diretiva/component ser destruído
Roteamento
Passo 1: app.routing.ts
Passo 1: app.routing.ts
Passo 1: app.routing.ts
Passo 1: app.routing.ts
Passo 2: importar arquivo no app.module e declarar nos imports
Importar as rotas
Passo 3: Adicionar o router-outlet no seu componente principal
Passo 4: Adicionar os links de roteamento na aplicação
Organizando as
rotas do projeto
Módulo Usuários: criar arquivo users.routing.ts
(também não esquecer de importar no app.module.ts
Pode passar parâmetro pra rota também!
E pra obter o parâmetro da rota:
E pra obter o parâmetro da rota:
Não esquecer de importar e injetar no construtor
Rotas filhas
Passo 1: Declarar rota parente e rotas filhas
Passo 1: Declarar rota parente e rotas filhas
Passo 2: no componente parente também é
preciso de declarar o router-outlet
Passo 2: no componente parente também é
preciso de declarar o router-outlet
Guards:
canActivate
canDeactivate
Passo 1: Adicionar a guarda na rota
Passo 1: Adicionar a guarda na rota
Passo 2: criar um serviço com a lógica (usuário logado, etc)
Passo 2: criar um serviço com a lógica (usuário logado, etc)
Passo 2: criar um serviço com a lógica (usuário logado, etc)
Passo 2: criar um serviço com a lógica (usuário logado, etc)
Passo 3: declarar o serviço guarda como provider no módulo
Passo 3: declarar o serviço guarda como provider no módulo
Passo 1: criar serviço de guarda
Passo 2: implementar a lógica
No desativamento da rota, verificar se tem mudanças no formulário.
Passo 3: adicionar guarda na rota
Passo 3: adicionar guarda na rota
e tem mais!
Pipes
Decortator @Pipe
Pra usar: | nomeDoPipe
Formulários
Angular 2 em 60 minutos
2 TIPOS NO ANGULAR 2
•Data-driven (Formulário reativo)
•Lógica de validação no Component
•Template driven
•Lógica de validação no form
Template-driven
Template-driven
Template-driven
Template-driven
Super hiper mega
importante!
Template-driven
Template-driven
Template-driven
Template-driven
Template-driven
Template-driven
Template-driven
Template-driven
Super hiper mega
importante!
Variável
local referenciando o campo
pra validação
Template-driven
Template-driven
Data-driven
Data-driven
Data-driven
Super hiper mega
importante #1
Data-driven
Data-driven
Data-driven
Super hiper mega
importante #2
Data-driven
Data-driven
Data-driven
Data-driven
Data-driven: submit: já temos o form!
Data-driven: validação customizada
> npm install -g angular-cli
> ng new meu-projeto
> cd meu-projeto
> ng serve
ANGULAR CLI: CRIANDO COMPONENTS
> cd NomeProjeto
> ng generate component meu-primeiro
> ng g component meu-primeiro
ANGULAR CLI: CRIANDO COMPONENTS
Convenção de nomenclatura
meu-primeiro.component.ts
Palavras separadas por “-“
Ponto
“component" -> para indicar que é um componente
Ponto
ts -> extensão typescript
Convenção de nomenclatura
export class MeuPrimeiroComponent {}
meu-primeiro.component.ts
Convenção de nomenclatura
export class MeuPrimeiroComponent {}
meu-primeiro.component.ts
O mesmo se aplica a service.ts,
pipe.ts, directive.ts, etc
Angular 2 em 60 minutos
Angular 2 em 60 minutos
Dicas
Projetos
Grandes
Lazy loading +
módulos
Roteamento:
loadChildren
Roteamento:
loadChildren
Carrega a aplicação
Carrega o módulo
Ahead of Time
Compilation
DESENVOLVIMENTO DO PROJETO COM ANGULAR 2 + TYPESCRIPT
COMPILAÇÃO DA APLICAÇÃO COM TSC (COMPILADOR TS)
BUNDLING (TUDO EM UM ARQUIVO APENAS)
MINIFICAÇÃO
DEPLOY
Compilação "normal"
DOWNLOAD DE TODOS OS ARQUIVOS JAVASCRIPT
BOOTSTRAP DO ANGULAR 2
COMPILAÇÃO EM TEMPO REAL
APLICAÇÃO É RENDERIZADA
DESENVOLVIMENTO DO PROJETO COM ANGULAR 2 + TYPESCRIPT
COMPILAÇÃO DA APLICAÇÃO COM NGC (ANGULAR2 COMPILER)
BUNDLING (TUDO EM UM ARQUIVO APENAS)
MINIFICAÇÃO
DEPLOY
COMPILAÇÃO DO PROJETO E TEMPLATES PARA TS
COMPILAÇÃO DO PROJETO DE TS PARA JS
Compilação aot
DOWNLOAD DE TODOS OS ARQUIVOS JAVASCRIPT
BOOTSTRAP DO ANGULAR 2
APLICAÇÃO É RENDERIZADA
ANGULAR CLI: NG SERVE OU BUILD —AOT
> cd NomeProjeto
> ng serve —-aot
> ng build —-aot
Juntando tudo!
Demo
•https://github.com/loiane/curso-angular2
•https://github.com/loiane/angular2-pokedex
•https://github.com/loiane/angular2-crud-rest
•https://github.com/loiane/angular2-crud-auth-routing
http://loiane.training
Curso Gratuito!
Angular 2 em 60 minutos
http://loiane.com
facebook.com/loianegroner
twitter.com/loiane
https://github.com/loiane
youtube.com/loianegroner
http://loiane.training

Mais conteúdo relacionado

PDF
Angular Interview Questions-PDF.pdf
PPTX
An overview of JavaScript
PPTX
Angular 9
PPTX
Introduction to angular with a simple but complete project
ODP
Routing & Navigating Pages in Angular 2
PDF
Angular Advanced Routing
PDF
Angular - Chapter 2 - TypeScript Programming
PPTX
Angular Course.pptx
Angular Interview Questions-PDF.pdf
An overview of JavaScript
Angular 9
Introduction to angular with a simple but complete project
Routing & Navigating Pages in Angular 2
Angular Advanced Routing
Angular - Chapter 2 - TypeScript Programming
Angular Course.pptx

Mais procurados (20)

PPTX
Angular 5 presentation for beginners
PDF
Angular - Chapter 4 - Data and Event Handling
PDF
Certificate 와 Provisioning Profile
PDF
Active Object Design Pattern
PPTX
PDF
CSS Unit I - Notes
PPTX
Unit 1 - TypeScript & Introduction to Angular CLI.pptx
PPTX
Angular Directives
PPTX
Angular 2.0 forms
PPTX
Angular Basics.pptx
PPTX
Angular introduction students
PPTX
Introduction à ajax
PDF
Angular - Chapter 1 - Introduction
PPT
Angular Introduction By Surekha Gadkari
PPTX
Angular Data Binding
PPTX
Angular kickstart slideshare
PDF
How to implement internationalization (i18n) in angular application(multiple ...
PDF
UDA-Guia desarrollo web services
PDF
Building blocks of Angular
PPTX
Angular 5 presentation for beginners
Angular - Chapter 4 - Data and Event Handling
Certificate 와 Provisioning Profile
Active Object Design Pattern
CSS Unit I - Notes
Unit 1 - TypeScript & Introduction to Angular CLI.pptx
Angular Directives
Angular 2.0 forms
Angular Basics.pptx
Angular introduction students
Introduction à ajax
Angular - Chapter 1 - Introduction
Angular Introduction By Surekha Gadkari
Angular Data Binding
Angular kickstart slideshare
How to implement internationalization (i18n) in angular application(multiple ...
UDA-Guia desarrollo web services
Building blocks of Angular
Anúncio

Destaque (13)

PDF
Devfest Cerrado: Angular 2
PDF
Angular 2 overview in 60 minutes
PDF
Campus Party Brasil 2017: Angular 2 #cpbr10
PDF
Introducao ao Ionic 2 na pratica
PDF
Angular 2
PDF
Ionic 2 na pratica!
PDF
DevFest BH: Ionic 2
PPTX
Tutorial do app e o divulgador
PDF
DevFest Nordeste: Ionic 2
PDF
Mobile Summit Brazil: Ionic 2
PDF
TDC SP 2016: Ionic 2
PDF
Open Source Mobile Experience: Ionic 2
PPSX
Oficina App Inventor
Devfest Cerrado: Angular 2
Angular 2 overview in 60 minutes
Campus Party Brasil 2017: Angular 2 #cpbr10
Introducao ao Ionic 2 na pratica
Angular 2
Ionic 2 na pratica!
DevFest BH: Ionic 2
Tutorial do app e o divulgador
DevFest Nordeste: Ionic 2
Mobile Summit Brazil: Ionic 2
TDC SP 2016: Ionic 2
Open Source Mobile Experience: Ionic 2
Oficina App Inventor
Anúncio

Semelhante a Angular 2 em 60 minutos (20)

PPTX
Angular 2
PDF
Curso AngularJS - Parte 1
PDF
Meetup #17
PDF
Angular js
PDF
Angular js
PPTX
Angular 2, TypeScript e Além
PDF
Projetos reativos com Angular, RxJS e Redux (ngRx)
PDF
Ionic 2/3 + Firebase
PDF
Livro angular2
PDF
Introdução ao Desenvolvimento Web com AngularJS - Google I/O Extended Brasília
PDF
Introdução à Programação Web com Angular
PDF
Conhecendo os fundamentos e desenvolvendo uma apliação básica com Angular2
PDF
AngularJS Abraçando o MVC Client-Side
PDF
Angular 4 - Introdução
PDF
Java script aula 10 - angularjs
PDF
AngularJS com ASP.NET MVC 4 - Binding, Eventos, Ajax, Validações e Rotas
PPTX
Construindo Diretivas com AngularJS
PPTX
A evolução do AngularJS
PDF
Ionic workshop
PDF
TDC 2014 - Arquitetura front-end com AngularJS
Angular 2
Curso AngularJS - Parte 1
Meetup #17
Angular js
Angular js
Angular 2, TypeScript e Além
Projetos reativos com Angular, RxJS e Redux (ngRx)
Ionic 2/3 + Firebase
Livro angular2
Introdução ao Desenvolvimento Web com AngularJS - Google I/O Extended Brasília
Introdução à Programação Web com Angular
Conhecendo os fundamentos e desenvolvendo uma apliação básica com Angular2
AngularJS Abraçando o MVC Client-Side
Angular 4 - Introdução
Java script aula 10 - angularjs
AngularJS com ASP.NET MVC 4 - Binding, Eventos, Ajax, Validações e Rotas
Construindo Diretivas com AngularJS
A evolução do AngularJS
Ionic workshop
TDC 2014 - Arquitetura front-end com AngularJS

Último (19)

PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula04-Academia Heri- Tecnologia Geral 2025
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Processos na gestão de transportes, TM100 Col18
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Apple Pippin Uma breve introdução. - David Glotz
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Aula 18 - Manipulacao De Arquivos python
COBITxITIL-Entenda as diferença em uso governança TI
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...

Angular 2 em 60 minutos