Я предоставляю простой пример маршрутизации, который хорошо работает. Единственная проблема заключается в том, что routerLinkActive добавляет класс "baboossa" в зависимости от того, какая ссылка активна. Когда я перехожу из дома к другим ссылкам как "около" или "окна", ссылка становится оранжевой (из-за класса бабуосса), но я все еще вижу, что дома тоже оранжевый. Почему теперь у меня есть 2 ссылки с добавленными классами из routerLinkActive, и класс не удаляется из дома?
app.component.html
<ul>
<li><a [routerLink]="''" routerLinkActive="baboossa">Home</a></li>
<li><a [routerLink]="'/about'" routerLinkActive="baboossa">About</a></li>
<li><a [routerLink]="'/window'" routerLinkActive="baboossa">Window</a></li>
</ul>
<router-outlet></router-outlet>
app.module.ts
import { RouterModule } from '@angular/router';
imports: [
RouterModule.forRoot([
{path:'', component: HomeComponent},
{path:'about', component: AboutComponent},
{path:'window', component:WindowComponent}
])
]
styles.css
.baboossa {background:orange;}
Результаты:
Может кто-то указать на проблему, почему я получаю 2 оранжевых фона на других активных ссылках, чем baseone (home)?
Вы можете архивировать двумя способами:
[routerLinkActiveOptions]="{ exact: true }"
с помощью routerLinkActive. Например: [routerLink]="''" [routerLinkActive]="['baboossa']" [routerLinkActiveOptions]="{ exact: true }"
.
path: ''
маршрутизатора path: ''
на любой конкретный путь, например '{path:' ', redirectTo:' home '} в вашем модуле маршрутизатора.Как это:
[{
path: '',
pathMatch : 'full',
redirectTo: 'home'
},
{
path: 'home',
component: HomeComponent
}]
и измените [routerLink]="''"
на [routerLink]="'home'"
.
Вот Stackblitz
Я думаю, вы можете проверить ссылку ниже
https://stackblitz.com/edit/angular-router-basic-example-jufxu8?file=app/app.routing.module.ts
Для большей угловой маршрутизации
Здесь другой способ сделать это с именованным путем по умолчанию вместо пустого. Подход RESTful API, при котором URL легко понять.
<ul>
<li><a [routerLink]="[ 'home' ]" routerLinkActive="baboossa">Home</a></li>
<li><a [routerLink]="[ 'about' ]" routerLinkActive="baboossa">About</a></li>
<li><a [routerLink]="'[ 'window' ]" routerLinkActive="baboossa">Window</a></li>
</ul>
<router-outlet></router-outlet>
А потом
import { RouterModule } from '@angular/router';
imports: [
RouterModule.forRoot([
{path:'home', component: HomeComponent},
{path:'about', component: AboutComponent},
{path:'window', component:WindowComponent}
{path:'**', redirectTo: 'home'}
])
]
{path:'', component: HomeComponent}
должен быть{path:'', component: HomeComponent, pathMatch: 'full' }