由于以下原因,我很头疼 . 希望你能指出我正确的方向 .

我正在定制Guard中使用角度/路由器中的Angular 2的ActivatedRouteSnapshot . 调用此警卫的路径与解析器的数据不同 . 但是,当我尝试访问此数据时,找不到此数据,但它存在 . 让我用一个真实的例子来澄清:

app.routing

(...)
path: "businessrules", component: TabsComponent, data: { title: "Business Rules Configuration" }, canActivate: [AuthGuard, RoleGuard], resolve: {
                environmentsList: EnvironmentsResolver,
                pagesList: PagesResolver
            }
(...)

role-guard.service

@Injectable()
export class RoleGuard implements CanActivate {

constructor(private authService: AuthService, private router: Router) {
}
canActivate(route: ActivatedRouteSnapshot) {
    console.log(route); //here, inside route, you can find data, and inside it, environmentList and pagesList
    console.log(route.data); //but here, this data can't be found
    return true;
    }
}

console.log(route)

(...)
Object: 
    environmentsList:Array[4]
    pagesList:Array[6]
    title: "Business Rules Configuration"
    __proto__:Object
(...)

console.log(route.data)

(...)
Object
    title: "Business Rules Configuration"
    __proto__: Object
(...)

这两个日志都是相同的路线,所以,我错过了什么?对不起,如果帖子有点乱,很乐意尝试澄清是否有些奇怪 .

谢谢 .

EDIT 一位同事告诉我,我需要订阅route.data,但似乎我可以使用ActivatedRoute,我不能在构造函数中使用ActivatedRoute,因为它只会被执行一次而且我需要它按路由执行 . 有关如何使这项工作的任何想法?