Criando Links - Angular
Para facilitar a navegação entre diferentes partes da aplicação, geralmente se usa um sistema de navegação composto por links. Por exemplo, vamos considerar o seguinte projeto mencionado no tema anterior:
helloapp/ ├── src/ │ ├── app/ │ │ ├── about.component.ts │ │ ├── app.component.ts │ │ ├── app.config.ts │ │ ├── home.component.ts │ │ ├── not-found.component.ts │ ├── main.ts │ ├── index.html ├── angular.json ├── package-lock.json ├── package.json └── tsconfig.json
No tema anterior, no arquivo app.config.ts foram definidas três rotas:
import { ApplicationConfig } from "@angular/core";
import { provideRouter, Routes } from "@angular/router";
import { HomeComponent } from "./home.component";
import { AboutComponent } from "./about.component";
import { NotFoundComponent } from "./not-found.component";
// definição de rotas
const appRoutes: Routes = [
{ path: "", component: HomeComponent },
{ path: "about", component: AboutComponent },
{ path: "**", component: NotFoundComponent }
];
export const appConfig: ApplicationConfig = {
providers: [provideRouter(appRoutes)]
};
Os componentes HomeComponent
AboutComponent
AppComponent
Agora, vamos adicionar a navegação ao projeto. Para isso, no AppComponent
import { Component } from "@angular/core";
import { RouterOutlet, RouterLink } from "@angular/router";
@Component({
selector: "my-app",
standalone: true,
imports: [RouterOutlet, RouterLink],
styles: `a {padding: 5px;}`,
template: `<div>
<nav>
<a routerLink="">Início</a>
<a routerLink="/about">Sobre o site</a>
</nav>
<router-outlet></router-outlet>
</div>`,
})
export class AppComponent {}
A diretiva routerLink
@angular/router
De acordo com a primeira rota, o HomeComponent
<a routerLink="">
O AboutComponent
"about"
<a routerLink="/about">
/
AppComponent
AboutComponent

Estilizando Links Ativos
Para estilizar links ativos, usamos a diretiva especial routerLinkActive
import { Component } from "@angular/core";
import { RouterOutlet, RouterLink, RouterLinkActive } from "@angular/router";
@Component({
selector: "my-app",
standalone: true,
imports: [RouterOutlet, RouterLink, RouterLinkActive],
styles: `a {padding: 5px;}
.active {color: red;}`,
template: `<div>
<nav>
<a routerLink="" routerLinkActive="active">Início</a>
<a routerLink="/about" routerLinkActive="active">Sobre o site</a>
</nav>
<router-outlet></router-outlet>
</div>`,
})
export class AppComponent {}

No entanto, devemos considerar um detalhe importante ao estilizar os links. Quando clicamos no link "Sobre o site"

Isso ocorre porque o caminho da primeira rota routerLink=""
routerLink="/about"
Para resolver isso, usamos a diretiva routerLinkActiveOptions
<nav>
<a routerLink="" routerLinkActive="active"
[routerLinkActiveOptions]="{exact:true}">Início</a>
<a routerLink="/about" routerLinkActive="active">Sobre o site</a>
</nav>
O valor {exact:true}
Assim, garantimos que apenas o link correspondente ao URL exato seja estilizado como ativo.
