En Angular, la mejor práctica es cargar y configurar el enrutador en un módulo separado de nivel superior. El enrutador está dedicado al enrutamiento e importado por el AppModule. Por convención, el nombre de la clase del módulo es AppRoutingModule y pertenece a app-routing.module.ts
en el directorio src/app.
Crea un nuevo proyecto, según Angular - Local, agregue Bootstrap según Angular - Boostrap y cree la aplicación híbrida base según Angular - Material.
hito2-hibrida
Cree los componentes album y foto.
src/app/app.component.html
<mat-card>
(con todas sus etiquetas internas) <mat-drawer-container>
...
</mat-toolbar>
<mat-card class="example-card">
...
</mat-card>
</mat-drawer-container>
En src/app/foto/foto.component.html
<p>foto works!</p>
por la etiqueta <mat-card>
<mat-card class="example-card">
<mat-card-header>
<div mat-card-avatar class="example-header-image"></div>
<mat-card-title>Shiba Inu</mat-card-title>
<mat-card-subtitle>Dog Breed</mat-card-subtitle>
</mat-card-header>
<img mat-card-image src="https://material.angular.io/assets/img/examples/shiba2.jpg" alt="Photo of a Shiba Inu">
<mat-card-content>
<p>
The Shiba Inu is the smallest of the six original and distinct spitz breeds of dog from Japan.
A small, agile dog that copes very well with mountainous terrain, the Shiba Inu was originally
bred for hunting.
</p>
</mat-card-content>
<mat-card-actions>
<button mat-button>LIKE</button>
<button mat-button>SHARE</button>
</mat-card-actions>
</mat-card>
src/app/app.component.css
.example-card
y example-header-image
src/app/foto/foto.component.css
La etiqueta <router-outlet>
actúa como un marcador de posición para que Angular llene dinámicamente según el estado actual del enrutador (De acuerdo con la URL que llega del navegador).
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { FotoComponent } from './foto/foto.component';
import { AlbumComponent } from './album/album.component';
const routes: Routes = [
{ path: "foto", component: FotoComponent },
{ path: "album", component: AlbumComponent },
{ path: "**", redirectTo: "album" }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Coloque la etiqueta <router-outlet>
en el lugar donde se encontraba la etiqueta <mat-card>
.
<mat-drawer-container>
...
<mat-toolbar color="primary">
...
</mat-toolbar>
<router-outlet></router-outlet>
</mat-drawer-container>
Actualice el navegador o (re)inicie el servidor
Para ir de un URL a otro mediante la aplicación se utiliza el enrutamiento mediante el atributo routerLink
.
src/app/app.component.html
...
<mat-drawer #enlaces class="example-sidenav" mode="over">
<p> Enlaces </p>
</mat-drawer>
...
por
...
<mat-drawer #enlaces class="example-sidenav" mode="over">
<ul>
<li><a routerLink="/album">Album</a></li>
<li><a routerLink="/foto">Foto</a></li>
</ul>
</mat-drawer>
...
Foto
y Album