En las diferentes páginas HTML que conforman la plantilla de su sitio, identifique:
shared/navbar y shared/footerpages/index y pages/about.por ejemplo:
ng g c carpeta/nombre-componente
En el componente principal app.component.ts importe el componente Navbar
...
import { NavbarComponent } from './shared/navbar/navbar.component'
@Component({
...
imports: [CommonModule, RouterOutlet, NavbarComponent],
...
})
...
En el componente principal app.component.html
Extraiga las etiquetas HTML que se encuentran entre <!-- Navbar Start --> y <!-- Navbar End -->
<!-- Navbar Start -->
<div class="container-fluid sticky-top">
...
</div>
<!-- Navbar End -->
Reemplace por el selector del componente Navbar
<!-- Navbar Start -->
<app-navbar></app-navbar>
<!-- Navbar End -->
navbar.component.html reemplace el contenido por las etiquetas HTML extraídas.NOTA: Repita el proceso con el componente Footer.
En el componente principal app.component.ts importe el componente Index
...
import { IndexComponent } from './pages/index/index.component';
@Component({
...
imports: [CommonModule, RouterOutlet, ... , IndexComponent],
...
})
...
En el componente principal app.component.html
Extraiga todas las etiquetas HTML; excepto las etiquetas de los componentes previamente agregados.
Reemplace por el selector del componente Index
<!-- Navbar Start -->
<app-navbar></app-navbar>
<!-- Navbar End -->
<!-- Page Start -->
<app-index></app-index>
<!-- Page End -->
<!-- Footer Start -->
<app-footer></app-footer>
<!-- Footer End -->
index.component.html reemplace el contenido por las etiquetas HTML extraídas.En el archivo app.config.ts, importe el withHashLocation y agréguelo en el provider.
...
import { provideRouter, withHashLocation } from '@angular/router';
...
export const appConfig: ApplicationConfig = {
providers: [provideRouter(routes, withHashLocation() )]
};
En el archivo de rutas de la aplicación app.routes.ts, importe los componentes/páginas y registre las rutas
import { Routes } from '@angular/router';
import { IndexComponent } from './pages/index/index.component';
import { AboutComponent } from './pages/about/about.component';
export const routes: Routes = [
{ path: '', component: IndexComponent },
{ path: 'about', component: AboutComponent },
{ path: '**', redirectTo: '' }
];
En el componente principal app.component.html
Reemplace la etiqueta <app-index></app-index> por <router-outlet></router-outlet>
<!-- Navbar Start -->
<app-navbar></app-navbar>
<!-- Navbar End -->
<!-- Page Start -->
<router-outlet></router-outlet>
<!-- Page End -->
<!-- Footer Start -->
<app-footer></app-footer>
<!-- Footer End -->
En el componente compartido Navbar
En el navbar.component.ts importe los módulos RouterLinkActive y RouterLink.
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterLinkActive, RouterLink } from '@angular/router';
@Component({
...
imports: [CommonModule, RouterLinkActive, RouterLink],
...
})
En el navbar.component.html agregue el atributo routerLink con la ruta al componente/página correspondiente.
...
<a routerLink="/" class="nav-item nav-link">Home</a>
<a routerLink="/about" class="nav-item nav-link">About</a>
...
Reinicie el servidor y revise los cambios en el navegador.
Componente/Página correspondiente.A tiny demo with hybrid rendering in Angular Universal (SSR & SSG) https://t.co/mgLY9yeVN1
— Minko Gechev (@mgechev) December 8, 2020
At build time:
- Universal prerenders routes without params
At runtime:
- Server tries to render prerendered page
- Server fallbacks to SSR
<5 lines of diff to enable from default setup pic.twitter.com/pvdIp0eYrB
Componentes, ruteo