# 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 `