angular - 如何在父子路由之间共享查询参数?
问题描述
我建立了一个网站,其中模板已被划分为组件。模板的页眉和页脚在main.component.html文件中,主体注入router-outlet。
唯一改变导航的部分是身体。页眉和页脚保持不变。共享 storeid 查询参数以动态构建正文。
我遇到的问题是当我必须从 main.component.ts 文件中获取 storeid 查询参数时。我不知道如何使用我当前的路线配置来做到这一点。
以下是路线配置:
const routes: Routes = [
{
path: '',
component: HomeLayoutComponent, // HOME PAGE
children: [
{ path: 'home', component: HomeComponent },
{ path: '', redirectTo: '/home', pathMatch: 'full' },
]
},
{
path: '', // I TRIED ':storeid' here but negative
component: MainLayoutComponent, // MAIN LAYOUT IS DIVIDED AS DESCRIBED IN QUESTION. THIS IS THE STOREID I HAVE TO FETCH FROM HERE
children: [
{ path: 'event-details/:storeid', component: EventDetailsComponent }, // SO AS HERE TOO.
{ path: '', redirectTo: '/home', pathMatch: 'full' },
]
},
{ path: 'error-404', component: Error404PageComponent },
{ path: 'error-500', component: Error500PageComponent },
{ path: '**', component: HomeComponent }
];
谢谢
解决方案
大卫可能有点晚了,但我想我有办法解决你的问题。
通常,当使用在你的路由中传递的参数时,我们通过注入来访问这些参数ActivatedRoute
,然后通过订阅暴露的params
observable 或通过使用直接从当前 url 获取参数snapshot.params
。
export class {Your}Component implements OnInit {
params
constructor(private route: ActivatedRoute, ) { }
ngOnInit() {
this.route.params
.pipe(first())
.subscribe(x => {
this.params = x
});
this.params = this.route.snapshot.params
}
}
这里棘手的部分(这是您要问的问题)是,通过进行这种类型的访问,我们只能获取当前路由段中传递的参数。
最简单的解决方案是使用不同的ParamsInheritanceStrategy。通过将继承策略设置为always
,您将能够在附加到子段的组件中访问属于父路由段的参数。使用此策略时的棘手部分是,如果您有两个具有相同名称的参数,它们将覆盖,例如,如果您的路由是store/:storeId/route/:storeId/child
第二个:storeId
,如果它是从与第二个的段右侧相关的组件调用的,则会覆盖前一个:storeId
(first => second
从左到右 )。
您可以在StackBlitz上查看一个工作示例
推荐阅读
- r - 在 R 中闪亮加载页面一段固定的时间
- rabbitmq - rabbitmq中的vhost没有启动
- amazon-redshift - Redshift COPY 抛出错误,但“stl_load_errors”系统表未提供详细信息
- ios - 将 Firestore 数据分配给自定义对象
- python - 如何逐行获取groupby cumsum的总数
- dictionary - 如何在 Unity 中为类似我的世界的立方地形块的不同面应用不同的法线贴图纹理?
- c# - 如何在 .NET C# 应用程序 (WinForms) 中使用 ActiViz 时以 x64(64 位)平台为目标
- javascript - 当我在 html5 中按下按钮时,我正试图做出正确的移动
- linux - Web服务器中的Logrotation
- gnuradio - USRP N310 中 GNU Radio 中的 PSK 调制