Escolar Documentos
Profissional Documentos
Cultura Documentos
io/@lucianamedeiros/angular
1 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Este comando é para escolher a versão que queremos instalar, colocamos o “@” e o
2 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Outros comandos
Verficar a versão do Angular.
1 ng v
Criar um projeto.
1 ng new nome_do_projeto
3 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Node js (https://nodejs.org/en/)
4 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
https://nodejs.org/en/ (https://nodejs.org/en/)
5 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
O que é V8? O motor JavaScript V8 é o motor que a Google usa com seu navegador
Chrome. Poucas pessoas pensam sobre o que realmente acontece com o JavaScript no
lado do cliente. Bem, a engine JavaScript realmente interpreta o código e o executa.
Com o V8 a Google criou um ultra-rápido interpretador escrito em C++, com um outro
aspecto único: você pode baixar a engine e incorporá-la em qualquer aplicação
desejada. Isso não está restrito em rodar em um navegador. Então Node atualmente
usa o motor JavaScript V8 escrito pela Google e propõe que seja usado no servidor.
Express
Nodemon
https://nodemon.io/ (https://nodemon.io/)
6 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Para instalar:
1 npm i nodemon –g
Esse módulo é um utilitário que irá monitorar todas as alterações nos arquivos de sua
aplicação e reiniciar automaticamente o servidor quando for necessário.
Características:
• Reinício automático da aplicação.
• Detecta extensão de arquivo padrão para monitorar.
• Suporte padrão para node & coffeescript, mas fácil de executar qualquer executável
(como python, make, etc).
• Ignorando arquivos ou diretórios específicos.
• Assista diretórios específicos.
• Funciona com aplicativos de servidor ou utilitários de execução única e REPLs.
• Necessário em aplicativos de nó.
Código aberto e disponível no github
7 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Mongoose
http://mongoosejs.com/ (http://mongoosejs.com/)
Para instalar:
1 npm i mongoose -g
Conceitos Gerais
Classe e Objeto
8 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Uma classe é uma forma de definir um tipo de dado em uma linguagem orientada a
objeto. Ela é formada por dados e comportamentos.
Para definir os dados são utilizados os atributos, e para definir o comportamento são
utilizados métodos. Depois que uma classe é definida podem ser criados diferentes
objetos que utilizam a classe. A Listagem 1 mostra a definição da classe Empresa, que
tem os atributos nome, endereço, CNPJ, data de fundação, faturamento, e também o
método imprimir, que apenas mostra os dados da empresa.
Encapsulamento
O conceito do encapsulamento consiste em “esconder” os atributos da classe de quem
for utilizá-la. Isso se deve por dois motivos principais.
Um é para que alguém que for usar a classe não a use de forma errada como, por
exemplo, em uma classe que tem um método de divisão entre dois atributos da classe
- se o programador java não conhecer a implementação interna da classe, ele pode
colocar o valor zero no atributo do dividendo, mas se a classe estiver corretamente
encapsulada podemos impedir que o programador faça isso.
Associação de Classes
9 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Herança
A herança é um tipo de relacionamento que define que uma classe “é um” de outra
classe como, por exemplo, a classe Funcionario que é uma Pessoa, assim um
Funcionário tem um relacionamento de herança com a classe Pessoa. Em algumas
linguagens, como C, é possível fazer herança múltipla, isto é, uma classe pode herdar
de diversas outras classes, mas em Java isso não é permitido, pois cada classe pode
herdar de apenas outra classe.
10 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Interface
11 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Desenvolvimento de Software
12 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
nunca estão em qualquer coisa, mas num servidor. Considera-se os dois para,
finalmente, fazer um site web funcional e interativo.
Arquitetura MVC
13 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
tornou-se popular para projetar aplicações web e até mesmo para aplicações móveis,
para desktop e para outros clientes. Linguagens de programação populares como Java,
C#, Ruby, PHP e outras possuem frameworks MVC populares que são atualmente
usados no desenvolvimentos de aplicações web.
14 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Um array é uma estrutura de dados homogênea que mantém uma série de elementos
de dados de mesmo tipo. Pode-se acessar os elementos individuais armazenados no
array por meio de uma posição de índice associada, geralmente numérica.
• Unidimensional: Vetor
• Bidimensional: Matriz
• Tridimensional: Cubo
Uma matriz é uma coleção de variáveis de mesmo tipo, acessíveis com um único nome
e armazenados contiguamente na memória. A individualização de cada variável de um
vetor é feita através do uso de índices.
15 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
No geral a contagem das posições se inicia em zero (0), de modo que a primeira
posição do vetor será a posição 0, a segunda posição será 1, e assim por diante; a
última posição do vetor será a de número n – 1, onde n é o número total de posições
disponíveis (tamanho do array). Assim, em um vetor de 4 posições a última posição
será 4 – 1 = 3. As posições em um vetor são sempre indicadas pelo número da posição
entre colchetes [ ].
Declaração de vetores
Podemos declarar um vetor em português estruturado usando a seguinte sintaxe:
nomeVetor: vetor [i…f] de Tipo_Dados
Onde:
Declaração de Matrizes
16 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Operador ternário
Por exemplo, suponhamos que precisamos criar uma funcionalidade para gerar uma
bonificação e a regra para essa funcionalidade é a seguinte:
Uma solução seria utilizar um if e else como já conhecemos, como por exemplo no
17 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Java:
Nesse exemplo o resultado é 150.0 pois o salário é menor que R$ 1000.0, ou seja,
bônus de 15%.
Entretanto, perceba que o que estamos fazendo é apenas um teste bem básico que
tem apenas uma única linha de código dentro do if ou do else. Será que não existe
uma maneira mais simples de resolver o mesmo problema?
Com esse código acima temos o mesmo resultado de antes, ou seja, 150.0. Mas como
funciona esse operador ternário? A estrutura de um operador ternário é compreendida
da seguinte forma:
18 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
JavaScript:
Angular
Angular (comumente referido como “Angular 2+” ou “Angular 2”) é uma plataforma de
aplicações web de código-fonte aberto e front-end baseado em TypeScript liderado
pela Equipe Angular do Google e por uma comunidade de indivíduos e corporações.
Angular é uma reescrita completa do AngularJS, feito pela mesma equipe que o
construiu.
19 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
• Angular não tem um conceito de “escopo” ou controladores, em vez disso, ele usa
uma hierarquia de componentes como o seu principal conceito arquitetônico.
• Angular tem uma expressão diferente de sintaxe, concentrando-se no uso de “[ ]”
para a propriedade de ligação, e no uso de “( )” para ligação do evento
• Modularidade – muito das funcionalidades principais foram movidas para os
módulos
• Angular recomenda o uso da linguagem da Microsoft, o TypeScript, que apresenta
as seguintes características:
◦ É baseado em classes de Programação Orientada a Objeto
◦ Tipagem Estática
◦ Programação genérica
• O TypeScript é um superconjunto do ECMAScript 6 (ES6), e é compatível com
ECMAScript 5 (i.e.: JavaScript). Angular também inclui ES6:
◦ Lambdas
◦ Iteradores
◦ For/Of loops
• Carregamento dinâmico
• Modelo de compilação assíncrono
• A substituição de controladores e $escopo com componentes e diretrizes – um
componente é uma directiva com um modelo
• Programação reativa de suporte usando RxJS
História do Angular
20 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
A versão 2.0
O Angular 2.0 foi anunciado no ng-Europe conference 22-23 de setembro de 2014. As
mudanças drásticas na versão 2.0 criou uma considerável controvérsia entre os
desenvolvedores. Em 30 de abril de 2015, os desenvolvedores Angular anunciaram que
o Angular 2 foi transformado de Alfa a Developer Preview. O Angular 2 mudou-se para
o Beta em dezembro de 2015,e a primeira versão foi publicada em Maio de 2016 A
versão final foi lançada em 14 de setembro de 2016.
Versão 4.0
Em 13 de dezembro de 2016 Angular 4 foi anunciado, ignorando o 3 para evitar uma
confusão devido ao desalinhamento da versão do pacote do roteador que já foi
distribuído como v3.3.0. A versão final foi lançada em 23 de Março de 2017. O Angular
4 é compatível com o Angular 2.
O Angular versão 4.3 é uma versão menor, o que significa que ele contém alterações
que não são de última hora e que é uma atualização pequena para 4.x.x.
21 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Novo roteador ciclo de vida de eventos para Guardas e Resoluções. Quatro novos
eventos: GuardsCheckStart, GuardsCheckEnd, ResolveStart, ResolveEnd juntam-se ao
conjunto existente de ciclo de vida, tais como a NavigationStart. Condicionalmente
desativa animações.
Versão 5.0
Angular 5 foi lançado em 1 de novembro de 2017. Os principais aprimoramentos
Angular 5 incluem suporte para web apps progressivos, uma compilação otimizadora e
melhorias relacionadas ao Material Design.
Versão 6.0
O lançamento da sexta versão do Angular ocorreu no dia quatro de Maio de 2018. Esta
versão teve um foco menor na base do framework, e maior na cadeia de ferramentas e
em como tornar mais fácil e rápida a migração com Angular nas atualizações futuras,
como os comandos da CLI (Interface de Linha de Comando): ng update, ng add,
Angular Elements, Componentes Angular Material + CDK, Componentes Iniciais
Angular Material, CLI Workspaces, Suporte a biblioteca, Provedores de Árvore
Shakable, Melhoramentos no desempenho de animações, e atualização do RxJS para a
versão 6.
Versão 7.0
A sétima versão do Angular foi lançada no dia dezoito de Outubro de 2018.
Atualizações relacionadas ao desempenho de aplicativos, Angular Material & CDK,
Rolagem Virtual, Melhor acessibilidade do elemento de formulário select (também
conhecido por combobox ou dropdownlist), agora suporta Content Projection usando
o padrão web para elementos personalizados, e atualizações de dependência em
relação ao Typescript 3.1, RxJS 6.3, Node 10 (ainda suportando Node 8).
Versão 7.1
O lançamento do Angular 7 ocorreu em novembro de 2018 e está disponível
Versão 8.0
O lançamento da mais nova versão do Angular ocorreu em maio de 2019 e conta com
algumas melhorias no funcionamento dos formulários reativos, melhoria na sintaxe
para declaração de rotas lazy-loading e a esperada disponibilização do compilador Ivy,
que nesta versão ainda está em preview e precisa ser habilitado, mas não é
recomendado que se utilize em produção.
Cada versão está prevista para ser compatível com a versão anterior. O Google se
comprometeu a fazer atualizações duas vezes por ano.
Versão 9.0
22 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Versão 10
O Angular 10 foi lançado em 24 de junho de 2020:
Caracteristicas:
• Depreciações e Remoções
23 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Versão 11
Versão 12
Typescript
24 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
25 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Lembrar:
A tipificação forte é opcional no TypeScript, mas o uso desse recurso torna seu
aplicativo mais previsível e facilita a depuração, portanto, você deve
definitivamente usá-lo.
Orientado a Objeto
A programação orientada a objetos (OOP) é um conceito antigo usado por vários
idiomas, como Java ou C #, para ajudar o desenvolvedor a associar dados e métodos
em um “objeto”. Em OOPobjeto são criados e são capazes de interagir uns com os
outros usando os métodos de enfrentamento público um do outro. JavaScript em si
não é uma linguagem orientada a objetos na maneira que C ++, C # ou Java são. O
TypeScript, por outro lado, pode ser tratado como uma linguagem orientada a objetos
por causa das construções de linguagem introduzidas sobre os fechamentos de
JavaScript.
O TypeScript traz muitos recursos orientados a objetos que perdemos no JavaScript
por um longo tempo. Temos conceitos explícitos de:
26 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
• Classes
• Interfaces
• Construtores
• Modificadores de acesso (públicos e privados)
Devido à fraca tipagem em JavaScript, muitas vezes acontece que tentamos realizar
operações em uma variável com um tipo diferente. Se a nossa lógica de aplicativo for
complexa, talvez não percebamos que estamos tentando atribuir elementos de um tipo
diferente uns aos outros. Em JavaScript, só saberemos sobre o erro quando alguém
acionar um código e ele falhar . Por outro lado, o TypeScript pode nos fornecer erros
de tempo de compilação, o que significa que ele pode detectar erros ao compilar
código para JavaScript e corrigi-lo antes de implantar na produção. Claro que não vai
pegá-los todos, mas ainda muito.
Fundamentos do TypeScript
O TypeScript fornece aos desenvolvedores conceitos orientados a objeto e compila a
verificação do tipo de tempo em cima do JavaScript, o que ajuda a escrever código
mais estruturado, sustentável e robusto. O TypeScript introduz alguns dos termos
orientados a objetos padrão, como Classes, Interfaces, Module e Variables, que no final
são convertidos em várias formas diferentes de JavaScript. A estrutura de código para
um arquivo TypeScript típico é mostrada abaixo.
Módulo
O módulo é como um namespace no mundo .NET e pode conter classes e interfaces.
Os módulos não possuem nenhum recurso próprio, eles apenas fornecem um
contêiner que pode ser usado para estruturar o código de forma lógica. Olhe para o
módulo apenas como um contêiner de entidade lógica / comercial.
Interface
27 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Interfaces são exatamente como interfaces no .NET que fornecem um contrato para as
classes implementarem. O TypeScript ajuda a fornecer verificação de erros de tempo
de compilação para as classes que implementam essas interfaces. Se todos os métodos
não foram implementados corretamente (incluindo a assinatura do método), o
TypeScript sinaliza aqueles em tempo de design, bem como o tempo de compilação.
Coisa interessante sobre Interfaces é que eles não existem em JavaScript e, portanto,
quando compilamos um arquivo TypeScript em JavaScript, as Interfaces são omitidas.
Classes
O conceito de Classes é novamente muito semelhante ao mundo .NET / Java. Classes
contém variáveis, propriedades e métodos que formam uma entidade lógica. O
TypeScript também permite definir o escopo da variável e funções com palavras-chave
como “ private” e “ public”, embora esse escopo não tenha qualquer efeito sobre o
JavaScript gerado.
Funções
Funções são métodos em que a lógica é implementada. O TypeScript fornece suporte
de tempo de compilação para garantir que qualquer pessoa que chame a função
mencionada concorde com o argumento de entrada e com o tipo de valor de retorno.
Variáveis
Variáveis são os campos definidos dentro de uma classe ou função. O TypeScript nos
permite definir uma variável usando a palavra-chave “ var” e atribuir um tipo de dados
a ela. Uma vez que um tipo de dado é atribuído, qualquer uso adicional da variável
deve ser com o mesmo tipo de dados, caso contrário, o TypeScript gerará erro no
design e no tempo de compilação. O TypeScript também é inteligente o suficiente para
inferir o tipo de uma variável e depois tratá-la como esse tipo quando uma variável é
declarada e inicializada. Nos casos em que o TypeScript não é capaz de inferir o tipo,
ele atribuirá esse tipo de variável “ any”.
Tipos de TypeScript
O TypeScript fornece alguns tipos primitivos (mostrados abaixo), bem como um tipo
dinâmico “ any”. " Any" É como " dynamic" palavra-chave em c # em que podemos
atribuir qualquer tipo de valor para a variável. O TypeScript não sinaliza erros de tipo
para variáveis do tipo “ any”.
No TypeScript, definimos uma variável com um tipo apenas acrescentando o nome da
variável com dois-pontos, seguido do nome do tipo, como mostrado no exemplo
abaixo.
28 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Classes e Interface
Classes
Classes TypeScript são uma unidade básica de abstração muito semelhante às classes C
# / Java. No TypeScript, uma classe pode ser definida com a palavra-chave “ class”
seguida do nome da classe. Classes TypeScript podem conter construtor, campos,
propriedades e funções. O TypeScript permite que os desenvolvedores definam o
escopo da variável dentro das classes como “ public” ou “ private”. É importante notar
que as palavras-chave “ public/ private” só estão disponíveis no TypeScript, uma vez
convertido para JavaScript, não há como distinguir entre os dois e ambos podem ser
chamados. O TypeScript define um construtor usando a palavra-chave " constructor".
Exemplo em Typescript:
29 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
1 class Student {
2 private firstName: string;
3 private lastName: string;
4 yearOfBirth: number; //Public scope by default
5 schoolName: string;
6 city: string;
7 //Constructor
8 constructor(firstName: string, lastName: string, schoolName: string,
9 city: string, yearOfBirth: number) {
10
11 this.firstName = firstName;
12 this.lastName = lastName;
13 this.yearOfBirth = yearOfBirth;
14 this.city = city;
15 this.schoolName = schoolName;
16
17 }
18 //Function
19 age() {
20 return 2014 - this.yearOfBirth;
21 }
22 //Function
23 printStudentFullName(): void {
24 alert(this.lastName + ',' + this.firstName);
25 }
26 }
Exemplo em Javascript:
30 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
31 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Interfaces
O TypeScript oferece suporte para Interfaces para usá-los como um contrato para
classes semelhantes a C #. Para declarar uma interface, usamos a palavra-chave “
interface” seguida do nome da interface. O importante a saber sobre interfaces é que,
quando compilado em JavaScript, o código da interface é ignorado e não há JavaScript
correspondente gerado.
1 interface IStudent {
2 yearOfBirth: number;
3 age : () => number;
4 }
Herança
Ter classes e interface significa que o TypeScript também suporta herança, que é um
recurso muito poderoso e alinha a escrita do código do lado do cliente com a maneira
como escrevemos código C #. Usando herança, podemos estender classes,
implementar e estender interfaces e escrever código que seja reconhecido de perto
com OOPs. Em TypeScript, quando estendemos uma classe base na classe filha, usamos
a palavra-chave “ super” para chamar o construtor da classe base ou até mesmo os
publicmétodos da classe base.
Para estender uma classe no TypeScript, usamos “ extend” palavra-chave após o nome
32 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
da classe e, em seguida, seguimos pela classe pela qual precisamos estender. Também
podemos herdar interfaces em outras interfaces.
1 //Interface
2 interface IStudent {
3 yearOfBirth: number;
4 age : () => number;
5 }
6 //Base Class
7 class College {
8 constructor(public name: string, public city: string) {
9 }
10 public Address(streetName: string) {
11 return ('College Name:' + this.name + ' City: ' + this.city
12 + ' Street Name: ' + streetName);
13 }
14 }
15 //Child Class implements IStudent and inherits from College
16 class Student extends College implements IStudent {
17 firstName: string;
18 lastName: string;
19 yearOfBirth: number;
20 //private _college: College;
21 //Constructor
22 constructor(firstName: string, lastName: string, name: string,
23 city: string, yearOfBirth: number) {
24 super(name, city);
25 this.firstName = firstName;
26 this.lastName = lastName;
27 this.yearOfBirth = yearOfBirth;
28 }
29 age () {
30 return 2014 - this.yearOfBirth;
31 }
32 CollegeDetails() {
33 var y = super.Address('Maple Street');
34 alert(y);
35 }
36 printDetails(): void {
37 alert(this.firstName + ' ' + this.lastName
38 + ' College is: ' + this.name);
39 }
40 }
33 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
passarmos o valor, então a função recebe o valor padrão atribuído, senão o valor
passado na chamada de função é obtido como mostrado no exemplo abaixo:
1 Subject(subjectList?: string[]) {
2 if (subjectList == null) {
3 alert('Oh, You have not subscribed to any course');
4 }
5 }
Operadores aritméticos
34 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Os operadores aritméticos são aqueles que nós estudamos na escola, aquelas funções
básicas de somar, subtrair, multiplicar e dividir. Utilizando esses operadores nós
podemos criar operações matemática com valores numéricos.
Abaixo você tem uma lista com os operadores que nós podemos utilizar com
JavaScript:
• adição (+)
• subtração (-)
• multiplicação (*)
• divisão (/)
• módulo — resto da divisão — (%
• exponenciação (**)
• incremento (++)
• decremento (- -)
Adição (+)
Nós utilizamos esse operador para somar valores numéricos:
Subtração (-)
Nós utilizamos esse operador para subtrair valores numéricos, retornando a diferença
entre eles
Multiplicação (*)
Nós utilizamos esse operador multiplicar valores numéricos
1 var num1 = 3;
2 var num2 = 5;
3 console.log(num1 * num2); // resultado 15
Divisão (/)
35 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Módulo (%)
Esse operador retorna o resto da divisão
1 var num1 = 3;
2 var num2 = 2;
3 console.log(num1 % num2); // resultado 1var num3 = 20;
4 var num4 = 5;
5 console.log(num3 % num4); // resultado 0var num5 = -1;
6 var num6 = 2
7 console.log(num5 % num6); // resultado -1
Exponenciação ()**
Esse operador retorna o valor do primeiro operando elevado ao segundo operado
1 var num1 = 3;
2 var num2 = 2;
3 console.log(num1 ** num2); // resultado 9
Incremento (++)
Esse operador incrementa um valor ao operando.
• Caso ele seja utilizado depois do operando Ex.: operando++, ele retorna o valor
antes de incrementar.
• Caso ele seja utilizado antes do operando Ex.: ++ operando, ele retorna o valor já
36 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
incrementado
1 var num1 = 3;
2 console.log(num1++); // resultado 3var num2 = 1;
3 console.log(++num2); // resultado 2
Decremento (- -)
Esse operador decrementa (subtrai um de) seu operando e retorna um valor.
• Caso ele seja utilizado depois do operando Ex.: operando - -ele retorna o valor
antes de decrementar
• Caso ele seja utilizado antes do operando Ex.: — operando, ele retorna o valor já
decrementado
Esses são os operadores básicos para que possamos criar as nossas expressões do dia
a dia.
Operadores lógicos
Operadores lógicos são utilizados para comparar dois ou mais valores, retornando um
valor Boolean. Abaixo você tem uma breve descrição deles:
• && (And): O operador (and) irá retornar true somente se todos os valores da
expressão forem verdadeiros
• || (OR): O operador (or) irá retornar true se um dos valores comparados forem
verdadeiros
• ! (NOT): O operador (not) irá retornar o inverso do esperado na expressão
&& (and)
37 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
• num1 > 3 || num2 < 10: retorna true porque mesmo que num1 seja menor que 3,
num2 é menor que 10 (temos uma expressão verdadeira)
• num1 > 1 || num2 > 3: retorna false porque num1 não é maior que 1 e nem
num2 é maior que 3
• num1 >= 1 || num2 >= 3: retorna true porque estamos comparando se os
valores são maior ou igual aos valores iniciados nas nossas variáveis
! (not)
38 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Resultado:
Programação Funcional
Uma função, neste sentido, pode ter ou não ter parâmetros e um simples valor de
retorno. Os parâmetros são os valores de entrada da função, e o valor de retorno é o
resultado da função. A definição de uma função descreve como a função será avaliada
em termos de outras funções. Por exemplo, a função é definida em termos de funções
de exponenciação e adição. Do mesmo modo, a linguagem deve oferecer funções
básicas que não requerem definições adicionais.
A Programação funcional trata a funções de forma em que estas possam ser passadas
como parâmetro e valores para outras e funções e podendo ter o resultado
armazenado em uma constante.
39 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
40 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
41 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Json (http://www.json.org/)
Sintaxe no Json
A ideia utilizada pelo JSON para representar informações é simples: para cada valor
representado, atribui-se um nome (ou rótulo) que descreve o seu significado. Esta
sintaxe é derivada da forma utilizada pelo JavaScript para representar informações.
Um valor pode ser uma string entre aspas duplas, ou um número, ou verdadeiro ou
falso ou nulo, ou um objeto ou uma matriz. Essas estruturas podem ser aninhadas.
42 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Uma string é uma seqüência de zero ou mais caracteres Unicode, agrupados em aspas
duplas, usando escapes de barra invertida. Um caractere é representado como uma
única cadeia de caracteres. Uma string é muito parecida com uma string C ou Java.
Um número é muito parecido com um número C ou Java, exceto que os formatos octal
e hexadecimal não são usados.
43 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Um par nome/valor deve ser representado pelo nome entre aspas duplas, seguido de
dois pontos, seguido do valor. Os valores podem possuir apenas 3 tipos básicos:
numérico (inteiro ou real), booleano e string. As Listagens 2, 3, 4 e 5 apresentam
exemplos. Observe que os valores do tipo string devem ser representados entre aspas.
A partir dos tipos básicos, é possível construir tipos complexos: array e objeto. Os
arrays são delimitados por colchetes, com seus elementos separados entre vírgulas. As
listagens 6 e 7 mostram exemplos.
44 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
[
[1,5],
[-1,9],
[1000,0]
]
Os objetos são especificados entre chaves e podem ser compostos por múltiplos pares
nome/valor, por arrays e também por outros objetos. Desta forma, um objeto JSON
pode representar, virtualmente, qualquer tipo de informação! O exemplo da Listagem
8 mostra a representação dos dados de um filme.
• Representando: Objeto
1 {
2 “titulo”: “JSON x XML”,
3 “resumo”: “o duelo de dois modelos de representação de informações”,
4 “ano”: 2012,
5 “genero”: [“aventura”, “ação”, “ficção”]
6 }
Uma matriz é uma coleção ordenada de valores. Um array começa com [(colchete
esquerdo) e termina com] (colchete direito). Os valores são separados por (vírgula).
45 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
1 [
2 {
3 “titulo”: “JSON x XML”,
4 “resumo”: “o duelo de dois modelos de representação de informações”,
5 “ano”: 2012,
6 “genero”: [“aventura”, “ação”, “ficção”]
7 },
8 {
9 “titulo”: “JSON James”,
10 “resumo”: “a história de uma lenda do velho oeste”,
11 “ano”: 2012,
12 “genero”: [“western”]
13 }
14 ]
15
Json x xml
Podemos entender o JSON como uma espécie de “concorrente” da XML na área de
troca de informações.
Semelhanças:
• Os dois modelos representam informações no formato texto.
• Ambos possuem natureza auto-descritiva (ou seja, basta “bater o olho” em um
arquivo JSON ou em um arquivo XML para entender o seu significado).
• Ambos são capazes de representar informação complexa, difícil de representar no
formato tabular. Alguns exemplos: objetos compostos (objetos dentro de objetos),
relações de hierarquia, atributos multivalorados, arrays, dados ausentes, etc.
• Ambos podem ser utilizados para transportar informações em aplicações AJAX.
• Ambos podem ser considerados padrões para representação de dados. XML é um
padrão W3C, enquanto JSON foi formalizado na RFC 4627.
• Ambos são independentes de linguagem. Dados representados em XML e JSON
podem ser acessados por qualquer linguagem de programação, através de API’s
específicas.
Diferenças:
• JSON não é uma linguagem de marcação. Não possui tag de abertura e muito menos
46 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
de fechamento!
• JSON representa as informações de forma mais compacta.
• JSON não permite a execução de instruções de processamento, algo possível em
XML.
• JSON é tipicamente destinado para a troca de informações, enquanto XML possui
mais aplicações. Por exemplo: nos dias atuais existem bancos de dados inteiros
armazenados em XML e estruturados em SGBD’s XML nativo.
Json no Java
Ao acessar a home page oficial do JSON (www.json.org (http://www.json.org)) você verá que
existem parsers disponíveis para quase todas as linguagens: Delphi, PHP, Java, Matlab,
C++, C#, etc.
No XML a coisa é bem mais fácil, pois existem duas API’s básicas para o parsing de
informações: SAX e DOM. Ambas já são instaladas junto com o Java e, daí, basta
utilizá-las. Adicionalmente, o princípio de funcionamento das API’s SAX e DOM é
bastante conhecido pelos desenvolvedores: DOM importa o documento todo para a
memória, criando uma árvore, enquanto o SAX percorre o arquivo sequencialmente
disparando eventos, sem realizar a importação de informações para a memória.
O JSON parece ainda não ter atingido esse grau maturidade. Várias pessoas/empresas
implementaram os seus próprios parsers, com diferentes princípios de funcionamento.
Como ainda não há um padrão, fica difícil decidir qual utilizar!
Para converter um objeto Java para JSON, utiliza-se o método toJson. E para fazer ao
contrário, ou seja, atribuir o conteúdo de um objeto Java a partir de uma string Json,
utiliza-se fromJson.
Algumas API’s
• JsonPlaceholder (http://jsonplaceholder.typicode.com/)
• Mocky.io (https://www.mocky.io/)
Json-server
47 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
O Que É REST?
REST vem de REpresentational State Transfer. É um estilo de arquitetura para projetar
aplicações conectadas, usando os simples verbos HTTP para permitir a comunicação
entre as máquinas. Assim, ao invés de usar uma URL para manipular informação do
usuário, REST enviar uma requisição HTTP, como GET, POST, DELETE, etc., para uma
URL manipular os dados.
48 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
https://www.npmjs.com/package/json-server (https://www.npmjs.com/package/json-server)
Exemplo:
json-server nome_do_arquivo.json
Injectable()
49 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Dependências são serviços ou objetos que uma classe precisa para executar sua
função. DI é um padrão de codificação em que uma classe pede dependências de
fontes externas em vez de criá-las.
A estrutura DI permite que você forneça dados para um componente de uma classe de
serviço injetável , definida em seu próprio arquivo. Para demonstrar, criaremos uma
classe de serviço injetável que forneça uma lista de heróis e registre essa classe como
um provedor desse serviço.
Ter várias classes no mesmo arquivo pode ser confuso. Geralmente, recomendamos
que você defina componentes e serviços em arquivos separados.
Se você combinar um componente e um serviço no mesmo arquivo, é importante
definir primeiro o serviço e depois o componente. Se você definir o componente antes
do serviço, obterá um erro de referência nulo em tempo de execução.
50 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
O decorador o marca como um serviço que pode ser injetado, mas o Angular não
consegue injetá-lo em lugar algum até que você configure um injetor de dependência
Angular com um provedor desse serviço.@Injectable()
O injetor é responsável por criar instâncias de serviço e injetá-las em classes como
HeroListComponent. Você raramente cria um injetor angular sozinho. A Angular cria
injetores para você enquanto executa o aplicativo, começando com o injetor de raiz
que ele cria durante o processo de bootstrap .
Um provedor informa ao injetor como criar o serviço . Você deve configurar um injetor
com um provedor antes que o injetor possa criar um serviço (ou fornecer qualquer
outro tipo de dependência).
Um provedor pode ser a própria classe de serviço, para que o injetor possa usar
newpara criar uma instância. Você também pode definir mais de uma classe para
fornecer o mesmo serviço de maneiras diferentes e configurar diferentes injetores com
provedores diferentes.
Graças à herança do injetor , você ainda pode injetar serviços em todo o aplicativo
51 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
HttpClient
O HttpClient oferece uma API HTTP de cliente simplificada para aplicativos Angulares
que se apóia na interface exposta pelos navegadores. Os benefícios adicionais de
incluir recursos de testabilidade, objetos de solicitação e resposta digitados,
interceptação de solicitação e resposta, apis e tratamento simplificado de erros.
Instalação
Antes de poder usar o HttpClient, você precisa importar o Angular HttpClientModule.
A maioria dos aplicativos faz isso na raiz AppModule.
52 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
No entanto, o acesso a dados raramente fica tão simples. Você normalmente pós-
processa os dados, adiciona manipulação de erros e talvez alguma lógica de repetição
para lidar com a conectividade intermitente.
É por isso que é uma prática recomendada separar a apresentação de dados do acesso
a dados encapsulando o acesso a dados em um serviço separado e delegando a esse
serviço no componente, mesmo em casos simples como este.
Tratamento de erros
O que acontece se a solicitação falhar no servidor ou se uma conexão de rede ruim
impedir que ela atinja o servidor? HttpClientretornará um objeto de erro em vez de
uma resposta bem-sucedida.
Dois tipos de erros podem ocorrer. O back-end do servidor pode rejeitar a solicitação,
retornando uma resposta HTTP com um código de status, como 404 ou 500. Essas são
respostas de erro.
Ou algo pode dar errado no lado do cliente, como um erro de rede que impede que a
solicitação seja concluída com êxito ou que uma exceção seja lançada em um operador
RxJS. Esses erros produzem ErrorEventobjetos JavaScript.
Inspeção, interpretação e resolução de erros é algo que você deseja fazer no serviço ,
não no componente.
53 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
O próprio RxJS está fora do escopo deste guia. Você encontrará muitos recursos de
aprendizado na web. Enquanto você pode conviver com um mínimo de conhecimento
RxJS, você vai querer aumentar suas habilidades RxJS ao longo do tempo, a fim de usar
de forma HttpClienteficaz.
Se você estiver acompanhando esses snippets de código, observe que deve importar
os símbolos observáveis e de operador RxJS que aparecem nesses snippets. Essas
ConfigServiceimportações são típicas.
Adicionando cabeçalhos
Muitos servidores exigem cabeçalhos extras para operações de salvaguarda. Por
exemplo, eles podem exigir um cabeçalho “Content-Type” para declarar explicitamente
o tipo MIME do corpo da solicitação. Ou talvez o servidor precise de um token de
autorização.
Input()
54 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Notas de uso
Você pode fornecer um nome opcional para usar em modelos quando o componente é
instanciado, que é mapeado para o nome da propriedade associada. Por padrão, o
nome original da propriedade associada é usado para ligação de entrada.
O exemplo a seguir cria um componente com duas propriedades de entrada, uma das
quais recebe um nome de ligação especial.
55 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
1 @Component({
2 selector: 'bank-account',
3 template: `
4 Bank Name: {{bankName}}
5 Account Id: {{id}}
6 `
7 })
8 class BankAccount {
9 // This property is bound using its original name.
10 @Input() bankName: string;
11 // this property value is bound to a different property name
12 // when this component is instantiated in a template.
13 @Input('account-id') id: string;
14
15 // this property is not bound, and is not automatically updated by
16 // Angular
17 normalizedBankName: string;
18 }
19
20 @Component({
21 selector: 'app',
22 template: `
23 <bank-account bankName="RBC" account-id="4747"></bank-account>
24 `
25 })
26 class App {}
Firebase (https://firebase.google.com/?hl=pt-br)
56 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
57 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Analytics
58 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Grow
59 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Earn
O Firebase fornece tudo que você precisa para desenvolver aplicações web e mobile,
desde o desenvolvimento e testes até a publicação e divulgação do aplicativo.
E para utilizar esse serviço, tudo o que os desenvolvedores precisam fazer é adicionar
algumas linhas de código nos aplicativos. Com isso, informações básicas do usuário
serão transmitidas para o Firebase. Assim como com o Google Analytics, os
desenvolvedores podem ter um instrumento específico em partes de seus aplicativos,
com eventos apurados para controlar, por exemplo, sempre que um botão for
pressionado ou uma compra for feita.
Usando esses dados, por meio do Google Firebase você pode construir segmentos de
público e permitir que desenvolvedores analisem o comportamento de seus usuários
em mais detalhes, vendo como suas campanhas publicitárias estão funcionando, por
exemplo.
60 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Variaveis do Firebase:
• auth: É o usuário autenticado
• data: São os dados existentes no caminho, por exemplo, pessoa/idade
• newData: São os dados postados no caminho. Esse variável só está disponível em
.write e .validate pois somente nesses momentos que novos dados serão postados
• now: É uma marcação de data e hora de tempo real do servidor
• root: Levará de volta a raiz do banco de dados
• $: Curinga, como usamos em $uid para pegar o ID do usuário do registro
O Firebase Hosting fornece hospedagem rápida e segura para seu aplicativo Web,
conteúdo estático e dinâmico e microsserviços. O Firebase Hosting é um host de nível
de produção para desenvolvedores. Com um único comando, você pode implantar
rapidamente aplicativos da Web e veicular conteúdo estático e dinâmico em uma CDN
global (rede de entrega de conteúdo). Você também pode emparelhar o Firebase
Hosting com o Cloud Functions ou o Cloud Run para criar e hospedar microsserviços
no Firebase.
Principais recursos
61 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Como funciona?
O Firebase Hosting foi desenvolvido para o desenvolvedor web moderno. Sites e
aplicativos estão mais poderosos do que nunca com o surgimento de estruturas
JavaScript front-end, como ferramentas de gerador de angular e estática, como Jekyll.
Esteja você implantando uma página de entrada de aplicativo simples ou um PWA
(Progressive Web App) complexo, o Hosting fornece a infraestrutura, os recursos e as
ferramentas personalizadas para implantar e gerenciar sites e aplicativos.
Usando a Firebase CLI , você implanta arquivos de diretórios locais no seu computador
no servidor Hosting. Além de exibir conteúdo estático, você pode usar o Cloud
Functions for Firebase ou Cloud Run para exibir conteúdo dinâmico e hospedar
microsserviços em seus sites. Todo o conteúdo é veiculado por uma conexão SSL do
servidor de borda mais próximo em nossa CDN global.
O Firebase Hosting possui opções de configuração de hospedagem leves para você
criar PWAs sofisticados. Você pode reescrever facilmente URLs para roteamento do
lado do cliente ou configurar cabeçalhos personalizados.
62 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
63 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
64 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
65 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
66 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Clicar em proxima
67 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
68 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
69 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
70 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
.
Entraremos na área de criação das collections.
.
Clicar em iniciar coleção para criarmos a collection produtos (lembrando que é no
plural). Digitar o nome e clicar em proxima
71 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
.
Clicar em codigo automatico para gerar o id da collection e digitar o nome dos
campos com seus respectivos valor para podermos inserir um novo documento.
72 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
.
Para adicionar mais campos, clicar e, adicionar campo . Adicionar todos os campos e
clicar em salvar
73 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
.
Aguardar criar a collection e o documento. É possivel adicionar campos, editar ou
excluir.
74 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
O roteador Angular é uma parte essencial da plataforma Angular. Ele permite que os
desenvolvedores criem aplicativos de página única com várias visualizações e
permitam a navegação entre essas visualizações.
75 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Visão geral
O navegador é um modelo familiar de navegação de aplicativos:
O Angular Router(“o roteador”) empresta esse modelo. Ele pode interpretar uma URL
do navegador como uma instrução para navegar para uma visualização gerada pelo
cliente. Ele pode passar parâmetros opcionais ao componente de visualização de
suporte que o ajudam a decidir qual conteúdo específico apresentar. Você pode
vincular o roteador a links em uma página e ele navegará para a visualização do
aplicativo apropriada quando o usuário clicar em um link. Você pode navegar
imperativamente quando o usuário clica em um botão, seleciona em uma caixa
suspensa ou em resposta a algum outro estímulo de qualquer origem. E o roteador
registra a atividade no diário de histórico do navegador para que os botões de voltar e
avançar também funcionem
Onde:
Comando Descrição
- -module Define para qual módulo da aplicação este componente deve ser
<string> criado.
Configuração:
Um aplicativo Angular roteado tem uma instância singleton do Routerserviço. Quando
76 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Um roteador não tem rotas até você configurá-lo. O exemplo a seguir cria cinco
definições de rotas, configura o roteador através do RouterModule.forRoot()método, e
adiciona o resultado ao AppModule’s importsmatriz.
77 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
na configuração. Isso é útil para exibir uma página “404 - Não encontrado” ou
redirecionar para outra rota.
A ordem das rotas na configuração é importante e isso é por design. O roteador usa
uma estratégia de ganhos de primeira partida ao combinar rotas, portanto rotas mais
específicas devem ser colocadas acima de rotas menos específicas. Na configuração
acima, as rotas com um caminho estático são listadas primeiro, seguidas por uma rota
de caminho vazia, que corresponde à rota padrão. A rota curinga vem por último
porque corresponde a cada URL e deve ser selecionada apenas se nenhuma outra rota
for correspondida primeiro.
Se você precisar ver quais eventos estão ocorrendo durante o ciclo de vida da
navegação, há a opção enableTracing como parte da configuração padrão do roteador.
Isso produz cada evento de roteador que ocorreu durante cada ciclo de vida de
navegação no console do navegador. Isso só deve ser usado para fins de depuração.
Você define a enableTracing: trueopção no objeto passado como o segundo
argumento para o RouterModule.forRoot()método.
Router-outlet
O Router-Outlet é uma diretiva que está disponível na biblioteca do roteador onde o
roteador insere o componente que é correspondido com base na URL do navegador
atual. Você pode adicionar várias tomadas em seu aplicativo Angular, o que permite
implementar cenários avançados de roteamento.
1 <router-outlet></router-outlet>
Rotas e Caminhos
Rotas são definições (objetos) compostas de pelo menos um caminho e um
componente (ou um redirecionamento para o caminho) atributos. O caminho refere-se
à parte da URL que determina uma visualização exclusiva que deve ser exibida, e o
componente refere-se ao componente Angular que precisa ser associado a um
caminho. Com base em uma definição de rota que fornecemos (por meio de um
RouterModule.forRoot (routes)método estático ), o roteador é capaz de navegar pelo
usuário para uma visualização específica.
Cada Route mapeia um URL pathpara um componente. O caminho pode estar vazio, o
78 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
O caminho pode ter uma sequência curinga ( ** ). O roteador selecionará essa rota se a
URL solicitada não corresponder a nenhum caminho para as rotas definidas. Isso pode
ser usado para exibir uma exibição “Não encontrado” ou redirecionar para uma
exibição específica se nenhuma correspondência for encontrada.
Router Params
Criar rotas com parâmetros é um recurso comum em aplicativos da web. Roteador
Angular permite acessar parâmetros de diferentes maneiras:
79 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Você pode criar um parâmetro de rota usando a sintaxe de dois pontos . Este é um
exemplo de rota com um parâmetro id :
Router Link
As RouterLink diretivas nas tags de âncora dão ao roteador controle sobre esses
elementos. Os caminhos de navegação são fixos, então você pode atribuir uma string à
routerLink(uma ligação “one-time”).
Se o caminho de navegação fosse mais dinâmico, você poderia ter vinculado a uma
expressão de modelo que retornou uma matriz de parâmetros de link de rota (a matriz
de parâmetros de link). O roteador resolve esse array em um URL completo.
Guarda de Rotas
Um roteador de rotas é um recurso do Roteador Angular que permite aos
desenvolvedores executar alguma lógica quando uma rota é solicitada e, com base
nessa lógica, permite ou nega o acesso do usuário à rota. É comumente usado para
verificar se um usuário está logado e tem autorização antes que ele possa acessar uma
página.
Você pode então proteger uma rota com o guarda usando o canActivateatributo:
80 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
Diretiva de Navegação
O roteador angular fornece a routerLinkdiretiva para criar links de navegação. Essa
diretiva leva o caminho associado ao componente para navegar. Por exemplo:
1 <a [routerLink]="'/contacts'">Contacts</a>
1 <router-outlet></router-outlet>
2 <router-outlet name="outlet1"></router-outlet>
Você pode então especificar a tomada onde deseja renderizar seu componente usando
o atributo outlet:
Comandos de Instalação
Angular Material
1 ng add @angular/material
81 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
1 npm i npm-registry-client
2 ng add angular-bootstrap-md
82 of 83 20/11/2023, 14:09
:a: Apostila Angular - Cursos Edson Belém - HackMD https://hackmd.io/@lucianamedeiros/angular
83 of 83 20/11/2023, 14:09