感谢@brandonroberts 的帮助。
活动链接是基于路径的,因此/home
不能/products
同时活动。
除非你有相同/home
和/products
下的链接li
。
然后,如果其中一个是活动的,它将添加活动类。
所以我以这个解决方案结束:使用isAdminPage
in AdminService
inside of AdminGuard
.
@Injectable()
export class AdminService {
isAdminPage: boolean = false;
}
@Injectable()
export class AdminGuard implements Guard {
constructor(
private _router: Router,
private _userService: UserService,
private _adminService: AdminService) {}
protectRoute(candidate: TraversalCandidate): Observable<boolean> {
return this._userService.checkAdmin()
.map(isAdmin => {
if (!isAdmin) {
this._router.replace('/home');
return false;
} else {
this._adminService.isAdminPage = true;
return true;
}
}).first();
}
}
然后用于_adminService.isAdminPage
检测:
<li class="nav-item" [class.active]="!_adminService.isAdminPage">
<a class="nav-link" linkTo="/home">user</a>
</li>
<li class="nav-item" [class.active]="_adminService.isAdminPage">
<a class="nav-link" linkTo="/admin/dashboard">admin</a>
</li>