假设我有一个应该为所有URL加载的全局配置。
例如:
/
/users
/users/abc
Run Code Online (Sandbox Code Playgroud)
我可以手动将解析器一个接一个地添加到所有url,但是在那种情况下,我必须从捕获路由数据的每个组件中更新全局配置,对吗?有没有更好的方法来解决这个问题?
假设我们有多个模块:
App Module
/login
/sign-up
User Module
/user/list
/user/:id
Product Module
/product/list
/product/:id
Run Code Online (Sandbox Code Playgroud)
@DeborahK的解决方案,我们仍然必须在每个模块的根路由中添加解析器,我可以肯定地说这肯定可以工作。但是,有没有一种方法可以一次申请一次?
如果您有父路由和子路由,您可以在父路由上设置解析器并在子路由中使用它。我这里有一个例子:https ://github.com/DeborahK/Angular-Routing/tree/master/APM-Final
我的父级和子级路线如下所示。请注意,解析器仅位于父级上。
{
path: ':id/edit',
component: ProductEditComponent,
resolve: { product: ProductResolver },
canDeactivate: [ProductEditGuard],
children: [
{
path: '',
redirectTo: 'info',
pathMatch: 'full'
},
{
path: 'info',
component: ProductEditInfoComponent
},
{
path: 'tags',
component: ProductEditTagsComponent
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后您可以像这样从子级读取解析器数据:
ngOnInit(): void {
this.route.parent.data.subscribe(data => {
this.product = data['product'];
if (this.productForm) {
this.productForm.reset();
}
});
}
Run Code Online (Sandbox Code Playgroud)
我正在关注变化,所以请订阅。如果您不需要监视更改,可以使用快照。
| 归档时间: |
|
| 查看次数: |
1135 次 |
| 最近记录: |