[英]Angular RouterModule.forRoot - access route path parameter, and pass it down to route data
我需要在我的 angular 模塊中設置路線的數據:
@NgModule({
imports: [
RouterModule.forRoot(
[
{
component: ManageProjectReleaseStageComponent,
path: 'ng-projects/:id/releases/:releaseId',
data: {
breadcrumb: 'View Release',
breadcrumbPredecessors: [
{ label: 'Project Search', url: '/ng-projects/search' },
{ label: 'View Project', url: '/ng-projects/:id/view' }
]
}
},
我需要在此處從該位中獲取id
參數: path: 'ng-projects/:id/releases/:releaseId',
並將其傳遞到此處: { label: 'View Project', url: '/ng-projects/:id/view' }
因為現在它只是傳遞字符串: ":id"
。
如何從path
訪問:id
參數,將其傳遞到data
中?
您可以使用解析器而不是路由器 static data
來訪問路由器實例並獲取其參數
面包屑解析器.ts
@Injectable({ providedIn: 'root' })
export class BreadcrumbResolver implements Resolve<any> {
constructor() {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
// Get :id from the route
const projectId = route.params.id;
// Initialize and Return this data
const breadcrumb = {
breadcrumb: 'View Release',
breadcrumbPredecessors: [
{ label: 'Project Search', url: '/ng-projects/search' },
{ label: 'View Project', url: `/ng-projects/${projectId}/view` } // Pass your ID value from the route
]
}
return breadcrumb;
}
}
路由器模塊
RouterModule.forRoot([
{
component: ManageProjectReleaseStageComponent,
path: 'ng-projects/:id/releases/:releaseId',
resolve: {
breadcrumb: BreadcrumbResolver
}
},
...
])
管理項目發布階段組件
@Component({...})
export class ManageProjectReleaseStageComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
const breadcrumb = this.route.snapshot.data.breadcrumb; // Access your breadcrumb value
console.log(breadcrumb);
}
}
已創建Stackblitz Demo供您參考
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.