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
(我都试过了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
?
我通过将以下内容传递给守卫中的 canActivate
函数解决了这个问题。
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
console.log(route.params['id']); // logs 136364285
return true;
}
最初我在构造函数中得到 route: ActivatedRouteSnapshot
,即使我使用 .snapshot
,它也没有产生预期的结果。不,我收到了我 关于 的路线,可以导航到那里并可以从那里检索参数。
我正在尝试访问路由器防护中的 :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
(我都试过了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
?
我通过将以下内容传递给守卫中的 canActivate
函数解决了这个问题。
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
console.log(route.params['id']); // logs 136364285
return true;
}
最初我在构造函数中得到 route: ActivatedRouteSnapshot
,即使我使用 .snapshot
,它也没有产生预期的结果。不,我收到了我 关于 的路线,可以导航到那里并可以从那里检索参数。