Wan*_*lle 19 routerlinkactive routerlink angular
我的routerLinkActive有问题.
这是两个GIF解释.
这是我的代码:
<ul class="nav">
<li *ngFor="let menuItem of menuItems" routerLinkActive="active" class="{{menuItem.class}}">
<a [routerLink]="[menuItem.path]">
<i class="material-icons">{{menuItem.icon}}</i>
<p>{{menuItem.title}}</p>
</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这是我路线的树.(红色称为组件)
和我的路线代码:
import ...
const routes : Routes = [
{
path: '',
component: HomeComponent,
canActivate: [AuthGuard],
children: [
{
path: 'dashboard',
component: DashboardComponent
}, ..., {
path: 'challenges',
component: ImageRankComponent
}, {
path: 'niveau',
component: LevelComponent
}, {
path: '',
redirectTo: 'dashboard',
pathMatch: 'full'
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
providers: [
{
provide: LocationStrategy,
useClass: HashLocationStrategy
}
],
exports: [RouterModule]
})
export class HomeRoutingModule {}
Run Code Online (Sandbox Code Playgroud)
和menuItem是:
this.menuItems = ROUTES.filter(menuItem => menuItem);
const ROUTES : RouteInfo[] = [{
path: 'dashboard',
title: 'Dashboard',
icon: 'dashboard',
class: ''
}, {
path: 'challenges',
title: 'Tous les challenges',
icon: 'dashboard',
class: ''
},
{
path: 'niveau',
title: 'Niveau en ligne',
icon: 'dashboard',
class: ''
}]
Run Code Online (Sandbox Code Playgroud)
你知道我的问题是什么吗?
编辑:
我试过了:
绝对路线.即:
path: '/home/dashboard'
Run Code Online (Sandbox Code Playgroud)
同
<a [routerLink]="menuItem.path">
Run Code Online (Sandbox Code Playgroud)
和
<a [routerLink]="[menuItem.path]">
Run Code Online (Sandbox Code Playgroud)
结果是一样的.不工作.
EDIT2:
添加:
[routerLinkActiveOptions] ="{exact:true}"来:
<li *ngFor="let menuItem of menuItems" routerLinkActive="active" class="{{menuItem.class}} " [routerLinkActiveOptions]="{exact: true}">
Run Code Online (Sandbox Code Playgroud)
没有解决问题.
EDIT3:
扩展名Augury告诉我,routerLink对于良好的路由是正确的.但是这个类没有在DOM中激活.
EDIT4:
所以,我做了一些探索.
我发现如果我将menuComponent(侧边栏)放在父根中,那就可以了,我会显示活动类(但我不想把它放在父级中)
EDIT5:
我已经完成了这种情况的掠夺......而且那个掠夺者的工作......我得不到它.
Vig*_*esh 11
试试这个 :
<li routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
<a>Home</a>
</li>
Run Code Online (Sandbox Code Playgroud)
所以我花了很多时间在这个问题上.
https://github.com/angular/angular/issues/19167
问题是:它适用于角度2但不是角度4.
我找到了角4的黑客攻击:
<li *ngFor="let menuItem of menuItems" [routerLinkActive]="" [ngClass]="rla.isActive?'active':''" #rla="routerLinkActive"class="{{menuItem.class}}">
<a [routerLink]="[menuItem.path]">
<i class="material-icons">{{menuItem.icon}}</i>
<p>{{menuItem.title}}</p>
</a>
</li>
Run Code Online (Sandbox Code Playgroud)
有:
[routerLinkActive]="" [ngClass]="rla.isActive?'active':''" #rla="routerLinkActive"
Run Code Online (Sandbox Code Playgroud)
编辑角5:
使用Angular 5,错误消失了!
| 归档时间: |
|
| 查看次数: |
13760 次 |
| 最近记录: |