我有一个 Angular 2.0.1(最终版)应用程序,它使用哈希位置策略为路线导航策略。
我将其中一条路线定义如下:
{
path: 'shiftmanage', component: ShiftManageComponent,
canLoad: [AuthGuard],
canActivate: [AuthGuard]
},
这是 AuthGuard 类:
import { Injectable } from '@angular/core';
import {
Route,
Router,
CanLoad,
CanActivate,
ActivatedRouteSnapshot,
RouterStateSnapshot } from '@angular/router';
@Injectable()
export class AuthGuard implements CanLoad, CanActivate {
constructor(private router: Router) {
console.log("AuthGuard constructor")
}
canLoad(route: Route): boolean {
if (route.path === "shifts") {
return true;
} else {
return false;
}
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if (route.routeConfig.path === "shiftmanage") {
return true;
} else {
return false;
}
}
}
我将此保护类添加到 NgModule Providers 中,如下所示:
providers: [
AuthGuard,
{ provide: LocationStrategy, useClass: HashLocationStrategy }
... other providers
]
导航的工作原理和可以激活每当我尝试导航到轮班管理 path.
PROBLEM: The canLoad路线守卫永远不会被击中。
问题:
Is this canLoad由于 HashLocationStrategy ,守卫没有被击中,或者我还做错了什么?