获取组件中的路由参数
Get route parameters in component
我正在处理 Angular-6 项目。我的申请有很多子路线。其中之一如下:
const routes: Routes = [
{
path: 'innovation-track/:innovation-track-id', component: InnovationTrackComponent,
children: [
{
path: 'sprint', component: ScrumBoardComponent
}
]
}
];
我想从 ScrumBoardComponent 中的 URL 获得 innovation-track-id 值。
我知道我可以通过执行以下操作得到它:
constructor(private _route: ActivatedRoute) { }
//somewhere in method
this._route.snapshot.parent.paramMap
但是,我想获取任何组件中的 innovation-track-id 值,无论它是子组件还是父组件。我的意思是我不想做以下事情:
this._route.snapshot.parent.paramMap
相反,我想做如下事情:
this._route.params.<any parameter name>
使用Activated Route
。作为 params
数组的索引,您可以使用任何参数名称。
constructor(private itunes:SearchService,
private route: ActivatedRoute) {
this.route.params.subscribe( params => params[<any parameter name>]);
}
创建一个服务(我们称之为RouteParamsService
):
export class RouteParamsService {
innovationTrackId = new BehaviorSubject(undefined);
}
在您的父组件中,订阅参数:
constructor(private route: ActivatedRoute, private service: RouteParamsService) {
route.params
.subscribe(params => service.innovationTrackId
.next(params && params['innovation-track-id'] || undefined))
}
现在您可以在任何组件中订阅您的服务,您将获得您的参数值。父组件将处理任何值更改,服务会将更改传播到订阅它的任何组件。
我正在处理 Angular-6 项目。我的申请有很多子路线。其中之一如下:
const routes: Routes = [
{
path: 'innovation-track/:innovation-track-id', component: InnovationTrackComponent,
children: [
{
path: 'sprint', component: ScrumBoardComponent
}
]
}
];
我想从 ScrumBoardComponent 中的 URL 获得 innovation-track-id 值。
我知道我可以通过执行以下操作得到它:
constructor(private _route: ActivatedRoute) { }
//somewhere in method
this._route.snapshot.parent.paramMap
但是,我想获取任何组件中的 innovation-track-id 值,无论它是子组件还是父组件。我的意思是我不想做以下事情:
this._route.snapshot.parent.paramMap
相反,我想做如下事情:
this._route.params.<any parameter name>
使用Activated Route
。作为 params
数组的索引,您可以使用任何参数名称。
constructor(private itunes:SearchService,
private route: ActivatedRoute) {
this.route.params.subscribe( params => params[<any parameter name>]);
}
创建一个服务(我们称之为RouteParamsService
):
export class RouteParamsService {
innovationTrackId = new BehaviorSubject(undefined);
}
在您的父组件中,订阅参数:
constructor(private route: ActivatedRoute, private service: RouteParamsService) {
route.params
.subscribe(params => service.innovationTrackId
.next(params && params['innovation-track-id'] || undefined))
}
现在您可以在任何组件中订阅您的服务,您将获得您的参数值。父组件将处理任何值更改,服务会将更改传播到订阅它的任何组件。