【发布时间】:2017-04-25 09:32:53
【问题描述】:
我正在尝试访问路由器防护中的: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(我试过params和queryParams):
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?
【问题讨论】:
-
我对此没有真正的解决方案,但是虽然您没有真正的答案,但也许您可以使用“this.router.url.split('/')[4]”得到身份证。希望有人能救你:)
-
@Powkachu 谢谢,我认为也许 Günter 是对的(他删除了他的答案)由于某种原因,参数尚未“集成”到路由器中......
标签: angular typescript angular-routing