angular - Angular 将父路由数据与当前路由合并
问题描述
我想有一种简单的方法来访问当前子路线上父母的所有路线数据,这似乎是一项常见的任务,我错过了一些内置的东西吗?
例子
const routes: Routes = [
{
path: '',
component: WrapperComponent,
data: {
prop1: 'abc',
},
children: [
{
path: '',
component: HomeComponent,
data: {
prop2: '1',
prop3: 'Some other data',
},
},
{
path: 'welcome',
data: {
prop1: 'efg',
prop2: 'my cool prop',
},
},
];
我的目标是激活路由的某种属性,它返回合并的路由数据,所以如果在:
/ - 路线数据将是
{
prop1: 'abc',
prop2: '1',
prop3: 'Some other data',
}
/welcome - 路线数据将是
{
prop1: 'efg',
prop2: 'my cool prop',
}
我已经使用以下代码实现了这一点,但我敢打赌,使用 observables 的人可以写得更好。
this.router.events // private router: Router,
.pipe(
filter((event) => event instanceof NavigationEnd),
map(() => this.activatedRoute),
map((route) => {
let data: any = {};
while (route.firstChild) {
data = { ...data, ...route.firstChild.snapshot.data };
route = route.firstChild;
}
return data;
}),
).subscribe((e) => console.log(e));
这个功能是否已经存在于角度?
解决方案
我认为可以通过使用paramsInheritanceStrategy: 'always'
when you set来做到这一点RouterModule
:
@NgModule({
imports: [
RouterModule.forRoot(routes, { paramsInheritanceStrategy: 'always' })
],
exports: [RouterModule]
})
export class AppRoutingModule { }
推荐阅读
- javascript - 通过 react-codemirror2 获取完整的编辑器状态
- python - 如何按 ID 分组,然后为每个新数据帧查找时间增量?
- scope - 多个库的文档,多个平台具有相同的类名
- laravel-8 - 如何在 laravel 8 中按品牌订购产品
- r - 如何并行化while循环?
- javascript - 未捕获的 TypeError:products.filter 不是函数
- html - 单元格内容内的 HTML
- amazon-web-services - 限制 AWS EC https 访问
- akka - Akka 演员的化身对远程调用很重要吗?
- sql - 在任何 8 周内使用 FK 计算最大行数