Angular 2 - 为什么 ActivatedRoute.params returns 空对象

Angular 2 - Why do ActivatedRoute.params returns empty Object

我正在尝试访问路由器防护中的 :id 路由参数,但由于某种原因,它总是 returns 一个空的 Object{}

起初我不知道该怎么做,所以我用 给我指明了正确的方向,但没有结果。那个和这个之间的主要区别是我的问题是 guard.

这是我的路线声明app-routing.module:

const dashboardRoutes: Routes = [
    {
        path: "dashboard/:id",
        component: dashboard.DashboardComponent,
        canActivate: [guard.LoggedInGuard],
        children: [
            {
                path: "",
                redirectTo: "home",
                pathMatch: "full"
            }, 
            ...

这是我的守卫existsInDatabase.guard(我都试过了paramsqueryParams):

constructor(
    private router: Router,
    private activatedRoute: ActivatedRoute
) { }


canActivate() {
    console.log(this.activatedRoute.params);
    this.activatedRoute.params.subscribe(param=> {
        console.log(param); // logs empty Object{}
        console.log(param['id']); // logs undefined
    });
    this.activatedRoute.queryParams.subscribe(param=> {
        console.log(param); // logs empty Object{}
        console.log(param['id']); // logs undefined
    });
    return true;
}

当我尝试从

导航时出现问题

http://localhost:4200/dashboard/136364285

至:

http://localhost:4200/dashboard/136364285/dock/1654321

如何获得 136364285

我通过将以下内容传递给守卫中的 canActivate 函数解决了这个问题。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    console.log(route.params['id']); // logs 136364285
    return true;
}

最初我在构造函数中得到 route: ActivatedRouteSnapshot,即使我使用 .snapshot,它也没有产生预期的结果。不,我收到了我 关于 的路线,可以导航到那里并可以从那里检索参数。