我正在构建一个大的应用程序的角度,使用功能模块与子路线。每个子部分通过特定于区段的布局呈现,该布局用于MVP设置子页面的状态。例如:
/app/projects/yJEBuuOmmRv7WuVomGkb
将在任何子路由上将项目yJEBuuOmmRv7WuVomGkb
加载到状态容器中。
我尝试过观察路由器事件,但遇到了一些具有挑战性的情况,应用程序在不同的上下文中处理不同的路由器(孩子对父母)。
我想在路由定义中这样做,并想知道是否有任何方法将回调函数附加到可以捕获路由参数并将它们应用于状态容器的路由。
例如,类似于这个伪代码:
const routes: Routes = [
{
path: '',
component: PageLayoutComponent,
children: [
{
path: '',
component: PagesComponent
},
{
path: 'admin/settings',
component: PageSettingsComponent
},
{
path: 'admin/publishing',
component: PagePublishingComponent
},
{
path: ':pageId',
component: PageDetailLayoutComponent,
// pseudo code!!!
onRoute: (params => {
StateContainer.set('page', params.pageId);
}),
children: [
{
path: '',
component: PageComponent
}
]
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class PagesRoutingModule { }
发布于 2019-01-16 11:31:51
您有一些选项可以将数据添加到路由。
示例:
{
path: 'heroes',
component: HeroListComponent,
data: { title: 'Heroes List'
}
从角度的文档:
第三个路由中的数据属性是存储与此特定路由关联的任意数据的位置。数据属性可在每个激活路由中访问。使用它存储项目,如页面标题,面包屑文本,以及其他只读的静态数据.在后面的指南中,您将使用解析保护来检索动态数据。
示例:
{
path: 'heroes',
component: HeroListComponent,
resolve: { hero: HeroResolver }
}
从角度的文档:
总之,您希望延迟呈现路由组件,直到获取了所有必要的数据。
要获得更多信息:https://angular.io/guide/router#resolve-guard,这意味着如果您调用给组件提供数据的api端点,则应该使用解析器。
也许您可以在组件的StateContainer.set
方法中调用ngOnInit。
https://stackoverflow.com/questions/54223751
复制相似问题