# Agregar navegación en la aplicación con enrutamiento
Hay nuevos requisitos para la aplicación Tour de Héroes:
* Agregar una vista de *Panel de control*.
* Agregar la capacidad de navegar entre las vistas *Héroes* y *Dashboard*.
* Cuando los usuarios hacen clic en el nombre de un héroe en cualquiera de las vistas, navegar a una vista detallada del héroe seleccionado.
* Cuando los usuarios hacen clic en un *enlace profundo* en un correo electrónico, abrir la vista detallada de un héroe en particular.
Para ver la aplicación de ejemplo que describe esta página, consulta el .
Cuando hayas terminado, los usuarios podrán navegar por la aplicación de esta manera:
## Agregar el `AppRoutingModule`
En Angular, la mejor práctica es cargar y configurar el enrutador en un módulo de nivel superior separado
que está dedicado al enrutamiento e importado por la raíz `AppModule`.
Por convención, el nombre de la clase del módulo es `AppRoutingModule` y pertenece a `app-routing.module.ts` en la carpeta `src/app`.
Utiliza el CLI para generarlo.
ng generate module app-routing --flat --module=app
`--flat` coloca el archivo en `src/app` en lugar de en su propia carpeta.
`--module=app` le dice a la CLI que lo registre en el arreglo de `importaciones` del `AppModule`.
El archivo generado se ve así:
Reemplázalo con lo siguiente:
Primero, `AppRoutingModule` importa `RouterModule` y `Routes` para que la aplicación pueda tener funcionalidad de enrutamiento. La siguiente importación, `HeroesComponent`, le dará al enrutador un lugar adonde ir una vez que configure las rutas.
Ten en cuenta que las referencias de CommonModule y el arreglo de declaraciones son innecesarias, por lo que ya no forman parte de `AppRoutingModule`. Las siguientes secciones explican el resto del `AppRoutingModule` con más detalle.
### Rutas
La siguiente parte del archivo es donde configuras tus rutas.
Las *Rutas* le indican al enrutador qué vista mostrar cuando un usuario hace clic en un enlace o
pega una URL en la barra de direcciones del navegador.
Como `AppRoutingModule` ya importa `HeroesComponent`, puedes usarlo en el arreglo de `rutas`:
Una `Ruta` típica de Angular tiene dos propiedades:
* `path`: una cadena que coincide con la URL en la barra de direcciones del navegador.
* `component`: el componente que el enrutador debe crear al navegar a esta ruta.
Esto le dice al enrutador que haga coincidir esa URL con `path: 'héroes'`
y mostrar el `HeroesComponent` cuando la URL sea algo como `localhost:4200/heroes`.
### `RouterModule.forRoot()`
Los metadatos `@NgModule` inicializan el enrutador y lo hacen escuchar los cambios de ubicación del navegador.
La siguiente línea agrega el `RouterModule` al arreglo `AppRoutingModule` de `importartaciones` y
lo configura con las `rutas` en un solo paso llamando
`RouterModule.forRoot()`:
El método se llama `forRoot()` porque configura el enrutador en el nivel raíz de la aplicación.
El método `forRoot()` proporciona los proveedores de servicios y las directivas necesarias para el enrutamiento,
y realiza la navegación inicial basada en la URL del navegador actual.
A continuación, `AppRoutingModule` exporta el `RouterModule` para que esté disponible en toda la aplicación.
## Agregar `RouterOutlet`
Abre la plantilla `AppComponent` y reemplaza el elemento `` con un elemento ``.
La plantilla `AppComponent` ya no necesita `` porque la aplicación solo mostrará el `HeroesComponent` cuando el usuario navegue hacia él.
El `` le dice al enrutador dónde mostrar las vistas enrutadas.
El `RouterOutlet` es una de las directivas del enrutador que estuvo disponible para el `AppComponent`
porque `AppModule` importa `AppRoutingModule` que exportó `RouterModule`. El comando `ng generate` que ejecutaste al comienzo de este tutorial agregó esta importación debido a la marca `--module=app`. Si creaste manualmente `app-routing.module.ts` o usaste una herramienta que no sea la CLI para hacerlo, deberás importar `AppRoutingModule` a `app.module.ts` y agregarlo al arreglo de `importaciones` del `NgModule`.
#### Pruébalo
Deberías seguir ejecutando este comando CLI.
ng serve
El navegador debería actualizar y mostrar el título de la aplicación, pero no la lista de héroes.
Mira la barra de direcciones del navegador.
La URL termina en `/`.
La ruta de acceso a `HeroesComponent` es `/heroes`.
Agrega `/heroes` a la URL en la barra de direcciones del navegador.
Deberías ver la vista maestra / detalle de héroes.
{@a routerlink}
## Agregar un enlace de navegación (`routerLink`)
Idealmente, los usuarios deberían poder hacer clic en un enlace para navegar en lugar de
pegar una URL de ruta en la barra de direcciones.
Agrega un elemento `