Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ANGULAR
FABIO ORTIZ
CHARRIS
TEMARIO
ANGULAR
TYPESCRIPT
BOOSTRAP
COMPONENTES
TIPOS DE DATOS
INTERPOLACION-BINDING
RUTAS
DIRECTIVAS
SERVICIOS
ANGULAR
Angular.io
Angular es un Framework de JavaScript de código abierto escrito en TypeScript. Su
objetivo principal es desarrollar aplicaciones de una sola página SPA. Google se encarga
del mantenimiento y constantes actualizaciones de mejoras para este framework.
CARACTERÍSTICAS DE ANGULAR
Angular usa DOM regular. Hay que tener en cuenta que si se realizan diez actualizaciones en la misma
página HTML. En lugar de actualizar las que ya se actualizaron, Angular actualizará toda la estructura de
árbol de las etiquetas HTML. A diferencia de otros frameworks como React.
TYPESCRIPT
TypeScript define un conjunto de tipos de JavaScript, lo que ayuda a los usuarios a escribir código
JavaScript que es más fácil de entender. Todo el código TypeScript se compila con JavaScript y se puede
ejecutar sin problemas en cualquier plataforma. TypeScript no es obligatorio para desarrollar una
aplicación Angular.
FUNDAMENTOS TYPESCRIPT
El enlace de datos (data binding) es un proceso que permite a los usuarios manipular elementos de la
página web a través de un navegador web. Emplea HTML dinámico y no requiere secuencias de comandos
ni programación complejas. El enlace de datos se utiliza en páginas web que incluyen componentes
interactivos, como calculadoras, tutoriales, foros y juegos. También permite una mejor visualización
incremental de una página web cuando las páginas contienen una gran cantidad de datos.
TESTING (PRUEBAS)
Módulos
Una aplicación Angular tiene un módulo raíz, llamado AppModule, que proporciona el mecanismo de
arranque para iniciar la aplicación.
COMPONENTES
Estos son piezas o fragmentos de código que define una clase que contiene la lógica y los datos de la
aplicación. Un componente por lo general define una parte de la interfaz de usuario (UI).
Un componente esta formado por tres archivos principales:
Html, typescript y un css
Esto genera el siguiente template para así ser usado:
<hello-word></hello-Word>
Cuando Angular haga el render del componente, el DOM resultante será así:
PLANTILLAS
Es una combinación entre el marcado Angular con HTML para modificar los elementos
HTML antes de que se muestren. Hay dos tipos de enlace de datos:
Enlace de propiedad: permite a los usuarios interpolar valores que se calculan a partir de
los datos de su aplicación en el HTML.
Cuando la aplicación cargue el componente y su template, el usuario verá lo siguiente:
METADATOS
Los metadatos le dicen a Angular cómo procesar una clase. Se utiliza para decorar la clase
para que pueda configurar el comportamiento esperado de una clase.
SERVICIOS
Los servicios sirven para compartir información entre componentes o incluso hacer
peticiones http a apis para obtener la información. Los servicios funcionan solo en ámbito
de lógica o datos, no están asociados a la vista.
INYECCIÓN DE DEPENDENCIA
Las directivas amplían el HTML proporcionándole una nueva sintaxis. Puede detectar
fácilmente las directivas porque tienen el prefijo «ng-«. Considérelos marcadores en el
elemento DOM, indicando a Angular que adjunte un determinado comportamiento al
elemento, o incluso que lo cambie por completo.
ngFor
ngIf
ngClass
ngModel
VERSIONES DE ANGULAR
«Angular» es el término general para las distintas versiones que existen. Angular se desarrolló en 2009 y,
como resultado, ha ido evolucionando cada vez más.
Primero, estaba el Angular original, llamado Angular 1 y eventualmente conocido como AngularJS. Luego
vinieron Angular 2, 3, 4, 5, 6, 7 hasta que finalmente, la versión actual, Angular 12, lanzada el 12/05/2021.
Cada versión posterior de Angular mejora su predecesora, corrige errores, aborda problemas y se adapta a la
creciente complejidad de las plataformas actuales.
Version actual angular 15
INSTALAR ANGULAR
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootst
rap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD6
5VohhpuuCOmLASjC" crossorigin="anonymous">
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstra
p.bundle.min.js" integrity="sha384-
MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>
Crear componente Manual
import {Component } from '@angular/core'
@Component({
selector:’app-carrusel',
template:`<h1>Clase Angular</h1><br>
<h4>Componentes</h4>
<h4>Angular 13</h4>
<h4>Semillerosti</h4>
`
})
Tipos De Datos
La interpolación de cadenas en Angular es el mecanismo para sustituir una expresión por un valor de tipo string en la
plantilla (template). Cuando Angular se encuentra una expresión entre {{}} en la plantilla lo evalúa y trata de sustituir el contenido por el valor
de la propiedad del componente con el mismo nombre.
import {Component } from '@angular/core'
@Component({
selector:’app-carrusel',
template:`<h1>{{titulo}}</h1><br>
<h4>{{nombre}}</h4>
<h4>{{edad}}</h4>
<h4>{{activo}}</h4>
`
})
CREAR COMPONENTES LINEA DE COMANDOS
Ng g c Components/menú
Ng g c Componnets/footer
html
<div class="bg-secondary fixed-bottom">
<p>Barranquilla, colombia</p>
</div>
APP.COMPONET.HTML
<menú></menú>
<footer></footer>
<router-outlet></router-outlet>
@Component({
selector:’app-carrusel',
templateUrl: './carrusel.component.html'
})
CREAR COMPONENTES
ng g c Componets/Cards
Ng g c Components/video
<youtube-player
videoId="80_Cr9m-1fE"
suggestedQuality="highres"
[height]="250"
[width]="500"
[startSeconds]="4"
[endSeconds]="8">
</youtube-player>
EN EL TS
ngOnInit() {
// Este código carga el reproductor de la API en un iframe de manera asíncrona,
siguiendo las instrucciones:
// https://developers.google.com/youtube/iframe_api_reference#Getting_Started
const tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
document.body.appendChild(tag);
}
RUTAS
imports: [
BrowserModule,
RouterModule.forRoot(routes)
],
ROUTERLINK
Las directivas *ngIf y *ngFor son atributos que podemos agregarle a los elementos
HTML que nos permiten en el caso del *ngIf condicionar si dicha marca debe agregarse a
la página HTML.
La directiva *ngFor nos permite generar muchos elementos HTML repetidos a partir del
recorrido de un arreglo de datos.
Directiva *ngFor
Families:Array<any> = [{
{
Codigo: 2341, Codigo: 5433,
Nombre: 'Fabio', Nombre: 'Jocelyn',
Apellidos :'Ortiz Charris', Apellidos :'Ortiz Buendía',
Edad: 45 Edad: 21
},
},
{
{
Codigo: 4786,
Codigo: 6542,
Nombre: 'Johana',
Nombre: 'Nicolle', Apellidos :'Gonzalez Ramirez',
Apellidos :'Ortiz Gonzalez', Edad: 36
Edad: 4 },
}, ]
<tbody>
<tr *ngFor="let item of Families; index as i">
<th scope="row">{{i+1}}</th>
<td>{{item.Codigo}}</td>
<td>{{item.Nombre}}</td>
<td>{{item.Apellidos}}</td>
<td>{{item.Edad}}</td>
</tr>
</tbody>
Ng template
Las pipes también llamadas tuberías o filtros son funciones que se llaman en una vista
(html) y que tienen por objetivo transformar un dato a mostrar para mejorar la experiencia
del usuario.
Hay una cantidad reducida de pipes que trae por defecto Angular y podemos hacer uso en
cualquier vistas de nuestras componentes. Lo más importante es que podemos crear
nuestras propias pipes, lo veremos en el próximo concepto.
<p>Nombre del cliente:{{ nombre | uppercase}}</p>
<p>Nombre del cliente:{{ nombre | lowerrcase}}</p>
<p>El saldo es:{{ saldo | currency:'$'}}</p>
<p>Días laborables: {{ dias | slice:1:6}}</p>
<p>{{ articulos | json }}</p>
<p>Fecha actual:{{ fechaActual | date:'d/M/y' }}</p>
Directiva *ngIf
Es una etiqueta del template propia de angular que puede utilizarse con directivas
estructurales (ngIf, ngFor, ngSwitch) y con directivas propias.
Esta etiqueta no se renderiza en el DOM
.ts
Export class NgIf{
Show:boolean = false;
ngInit(){
}
Constructor(){
}
}
NGIF
Esta directiva nos permite tener un enlace unidireccional entre una propiedad de
nuestra clase con el valor que se muestra un control de formulario HTML de tipo
input, textarea etc.
<div>
<p>Ingrese nombre<input type="text" [(ngModel)]="nombre"></p>
<p>Ingrese apellido<input type="text" [(ngModel)]="apellido"></p>
<p>Nombre completo:{{nombre}} {{apellido}}</p>
</div>
PASAR DATOS ENTRE COMPONENTES
Child.ts
Import { Component, OnInit, Input } from ‘/angular/core’;
Father.ts
Names:string [] =[]
Cosntructor(){ [‘Nicolle’,’Jocelyn’,’Grego’,’Johana’] }
Father.html
<div class=“container>
<ul>
<li *ngFor item of names></li>
<app-child [name] = “item”></app-child>
</ul>
</div>
ENVIAR DATOS DESDE EL HIJO AL PADRE
<h1>Componente Hijo</h1>
<h1>{{nombrehijo}}</h1>
<button class="btn btn-secondary"
(click)="mensaje()">Enviar</button>
<hr>
Padre.ts
<h1>{{titulo}}</h1>
<button class="btn btn-primary" (click)="mostrar()">Mostrar</button>
<hr>
<app-hijo nombrehijo = {{mensaje}} (respuesta)="titulo = $event"></app-hijo>
FORMULARIOS REACTIVOS
Angular material - tablas
ng add @angular/material
App.module
import { HttpClientModule} from '@angular/common/http’;
Imports:[
HttpClientmodule
]
servicios
Ng g s Servicios
Appmodule
Import {HttpClientModule } from ‘@angular/common/http’
Providers[
HttpClientModule
]
Services.ts
Imports:[
]
Table.ts
import { MatPaginator} from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { MatTableDataSource} from '@angular/material/table’;
En el constructor
//paginador
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
//En el html
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page
of users"></mat-paginator>
Filtro
applyFilter(event: Event){
const filtervalue = (event.target as HTMLInputElement).value;
this.dataSource.filter = filtervalue.trim().toLowerCase();
if(this.dataSource.paginator){
this.dataSource.paginator.firstPage();
}
Datasource: MatTableDataSource<Users>
ANGULAR + ANGULAR MATERIAL
<mat-toolbar>
<button mat-icon-button class="example-icon" aria-label="Example icon-button with menu icon">
<mat-icon>menu</mat-icon>
</button>
<span>My App</span>
<span class="example-spacer"></span>
<button mat-icon-button class="example-icon favorite-icon" aria-label="Example icon-button with heart icon">
<mat-icon>favorite</mat-icon>
</button>
<button mat-icon-button class="example-icon" aria-label="Example icon-button with share icon">
<mat-icon>share</mat-icon>
</button>
</mat-toolbar>
APP.MODULE
ToolBar
import {MatToolbarModule} from '@angular/material/toolbar’;
Mat.Icon
import {MatIconModule} from '@angular/material/icon’;
Mat.Button
import {MatButtonModule} from '@angular/material/button';
Imports:[
MatToolbarModule,
MatIconModule,
MatButtonModule
]
Copiar css
.example-spacer {
flex: 1 1 auto;
}
Math.icon
DIALOG