Angular - Instalación
Instalar vía CLI
Abrimos en Visual Studio Code la terminal.
Requisitos
](../images/clipboard-1019021346.png)
Crear proyecto



Ahora instalamos Tailwin CSS para angular
Creamos el archivo .postcssrc.json en la ruta frontend/.postcssrc.json
el siguiente codigo
queda asi:


Import Tailwind CSS
Adicionamos @import en ./src/styles.css

Levantamos el servidor con
Para probar que todo este funcionando bien hacemos lo siguiente:
En frontend/src/app/app.html

Si observas el resultado igual a la imagen anterior, incluyendo el tipo de fuente, entonces todo esta correcto.
Usando npm
Ahora en el archivo frontend/src/app/app.config.ts
import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core';
import { provideRouter } from '@angular/router';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { providePrimeNG } from 'primeng/config';
import Aura from '@primeuix/themes/aura';
import { routes } from './app.routes';
export const appConfig: ApplicationConfig = {
providers: [
provideBrowserGlobalErrorListeners(),
provideZoneChangeDetection({ eventCoalescing: true }),
provideRouter(routes),
provideAnimationsAsync(),
providePrimeNG({
theme: {
preset: Aura
}
})
]
};
Quedaria asi:

Creamos los componentes de Layout

Aplicamos la propiedad
A todo los componentes incluyendo el componente app-root principal en
frontend/src/app/app.ts
import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';
@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet],
templateUrl: './app.html',
styleUrl: './app.css'
})
export class App {
protected readonly title = signal('frontend');
}
frontend/src/app/components/layout/aside/aside.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-aside',
standalone: true,
imports: [],
templateUrl: './aside.html',
styleUrl: './aside.css'
})
export class Aside {
}
frontend/src/app/components/layout/footer/footer.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-footer',
standalone: true,
imports: [],
templateUrl: './footer.html',
styleUrl: './footer.css'
})
export class Footer {
}
frontend/src/app/components/layout/header/header.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-header',
standalone: true,
imports: [],
templateUrl: './header.html',
styleUrl: './header.css'
})
export class Header {
}
Luego se importan los componentes de layout en app-root
frontend/src/app/app.ts
import { Component, signal } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Header } from './components/layout/header/header';
import { Footer } from './components/layout/footer/footer';
import { Aside } from './components/layout/aside/aside';
@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet, Header, Footer, Aside],
templateUrl: './app.html',
styleUrl: './app.css'
})
export class App {
protected readonly title = signal('frontend');
}
frontend/src/app/app.html
<main class="min-h-screen flex flex-col border-4 border-red-500">
<!-- HEADER -->
<header class="h-16 bg-white border-2 border-blue-500 flex items-center justify-center font-bold text-blue-600">
<app-header></app-header>
</header>
<!-- CONTENEDOR CENTRAL (ASIDE + CONTENT) -->
<div class="flex flex-1">
<!-- ASIDE -->
<aside class="w-64 bg-white border-2 border-blue-500 flex items-start justify-start font-bold text-blue-400">
<app-aside></app-aside>
</aside>
<!-- CONTENT -->
<section class="flex-1 bg-white border-2 border-blue-500 flex items-center justify-center font-bold text-blue-600">
<router-outlet />
</section>
</div>
<!-- FOOTER (pegado al fondo) -->
<footer class="h-16 bg-white border-2 border-blue-500 flex items-center justify-center font-bold text-blue-600 mt-auto">
<app-footer></app-footer>
</footer>
</main>
Levantamos el servidor

En el navegador se debe ver asi:

Procedemos a insertar el menu en aside
Elegimos PanelMenu
frontend/src/app/components/layout/aside/aside.html
<div class="card flex justify-center">
<p-panelmenu [model]="items" class="w-full md:w-80" />
</div>
frontend/src/app/components/layout/aside/aside.ts
import { Component } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { PanelMenu } from 'primeng/panelmenu';
@Component({
selector: 'app-aside',
standalone: true,
imports: [PanelMenu],
templateUrl: './aside.html',
styleUrl: './aside.css'
})
export class Aside {
items: MenuItem[] | undefined;
ngOnInit() {
this.items = [
{
label: 'Clientes',
icon: 'pi pi-fw pi-users',
},
{
label: 'Tipo Productos',
icon: 'pi pi-fw pi-qrcode',
},
{
label: 'Productos',
icon: 'pi pi-fw pi-shopping-bag',
},
{
label: 'Ventas',
icon: 'pi pi-fw pi-shopping-cart',
}
];
}
}
Levantamos el servidor
ng s
