Angular 2 - 为什么ActivatedRoute.params返回空Object

时间:2017-04-25 09:32:53

标签: angular typescript angular-routing

我正在尝试访问路由器防护中的:id路由参数,但出于某种原因,它始终返回空Object{}

最初我不知道如何做到这一点,所以我使用this question指出了我正确的方向,但它没有产生任何结果。这与之间的关键区别在于我的问题出在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

0 个答案:

没有答案