angular - 未在子延迟加载的路由上调用父解析器
问题描述
我正在尝试根据不同的用户角色权限设置侧栏路线。设置侧栏路线的代码在站点解析器服务中。我在父路径中调用了它,我认为也应该为其子路径调用。但是,只有当我刷新特定的子路由时,才会调用此解析器。
这是我的站点路由服务的示例:
{
path: ':siteId',
resolve: { site: SiteResolverService },
children: [
// ... other child routes
{
path: 'jsa-training-user-assigned-jsa',
loadChildren: () => import('../jsa-quiz/jsa-quiz.module').then(m => m.JsaQuizModule),
canActivate: [RoleGuardService],
data: { expectedRole: [UserRole.SystemAdmin, UserRole.JsaCreator, UserRole.SiteAdmin, UserRole.PasscodeUser] },
runGuardsAndResolvers: 'always'
},
// ... other child routes
]
在这条路线上,我希望在不刷新的情况下调用解析器,所以我在下面尝试过,但没有工作。
runGuardsAndResolvers: '总是'
解决方案
当您刷新子路由时会调用解析器,因为触发了整个路由树,而从父路由访问子路由只会触发子路由。
您仍然可以通过访问以下内容在子组件中获取父解析器的结果route.parent
:
子组件.ts
import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute) {}
ngOnInit() {
console.log(this.route.parent.snapshot.data);
}
推荐阅读
- angular - 调试 Typescript 在 VS 中有效,但在 VS Code 中无效
- python - 在 python 中跳过 quandl 的 ssl 验证
- c# - 如果未选择下拉菜单,如何设置默认值(多选)
- html - 如何将 json 数据从 python 导出并打印到 localhost?
- python-3.x - sqlite-变量表名不适用于删除或插入命令
- javascript - 如何在没有弹出窗口的情况下使用 Google Identity API 和登录?
- android - 如何解决由于权限相关问题而导致谷歌播放控制台不允许我上传新版本的签名 apk 的问题
- c - 如何使用 nrf51822 模块在一定时间间隔后关闭 LED
- android - PayUMoney - Android:收到一些错误响应
- javascript - 根据选定的 id 排列对象数组