Componentes en Angular
En el apartado anterior de la instalación vimos un primer acercamiento al nuestro componente principal app.component.
Pero ahora crearemos nuestros propios componentes de acuerdo para lo que se requiera.
Para ello vamos a crear nuestro SPA (Single Page Aplication), es decir, que presenta toda mi aplicación en una sola pagina.
Para nuestro primer proyecto vamos a crear dentro de la carpeta layouts los siguientes componentes
header
content
footer
Para configurar mi plantilla del SPA
Me muestra los archivos asociados al componente que acabo de crear, dentro de la carpeta src/app/components/layouts/header
Si nos dirigimos al archivo que contiene la lógica del componente creado src/app/components/layout/header/header.component.ts
, nos indica de que manera debemos representar nuestro nuevo componente en el codigo HTML.
Para ello primero debe ir a src/app/app.component.ts
e importar el componente que queremos llamar (header.components)
Y luego lo tendríamos que pintar de la siguiente forma en el componente principal src/app/app.component.html
y vamos al navegador http://localhost:4200
Nos muestra el contenido del archivo src/app/components/layout/header/header.component.html
Si cambio el contenido de este archivo por
Automáticamente cambiaría la presentación de nuestro proyecto
Si queremos aplicar el mismo estilo que teníamos inicialmente, entonces demos cortar el estilo en donde estaba que es src/app/app.component.css
y lo pegamos en src/app/components/layout/header.component.css
y ya muestra en el navegador como estaba inicialmente
Ahora que ya sabemos el comportamiento de cada componente, creamos los que hacen falta de acuerdo a lo planeado inicialmente.
Y la estructura de carpetas y archivos queda así:
Si deseo configurar mi SPA de la siguiente manera:
Primero importamos los componentes en Entonces me dirijo a src/app/app.component.ts
Entonces me dirijo a src/app/app.component.html
<main>
<header>
<app-header></app-header>
</header>
<aside>
<app-aside></app-aside>
</aside>
<section>
<router-outlet></router-outlet>
</section>
<footer>
<app-footer></app-footer>
</footer>
</main>
y configuro mis estilos en src/app/app.component.css
utilizando CSS Grid
main {
display: grid;
gap: 10px;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
grid-template-areas:
"header header header header header"
"aside section section section section"
"footer footer footer footer footer";
row-gap: 0;
column-gap: 0;
grid-template-rows: 20% 70% 10%;
height: 98vh;
}
header {
grid-area: header;
border: 1px solid royalblue;
}
aside {
grid-area: aside;
border: 1px solid royalblue;
}
section {
grid-area: section;
border: 1px solid royalblue;
}
.recuadros {
display: flex;
flex-flow: row wrap;
row-gap: 20px;
margin: 2px 20px 2px 5px;
}
.elemento {
width: 25%;
}
footer {
grid-area: footer;
border: 1px solid royalblue;
}
Quedando mi SPA de la siguiente manera: