大佬教程收集整理的这篇文章主要介绍了angular – canActivate取决于父路线解析,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
export const APP_ROUTES: Routes = [ { path: '',resolve: { user: CurrentUserResolver },children: [ { path: ':sectionKey',canActivate: [SectionAccessGuard],children: [ { path: 'dashboard',component: DashboardComponent } ] } ] } ]
父路由将通过HTTP调用检索用户,并且我希望我的子路由:sectionKey仅在当前用户有权访问时才被激活.问题是,在快照完全填充之前,我的canActivate可以调用SectionAccessGuard:
@Injectable() export default class SectionAccessGuard implements CanActivate { canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot) { console.log(route.data); console.log(route); return true; } }
在控制台中,第一个条目什么都没有;但是,第二个条目最终将填充用户字段.
我知道canActivate方法可以返回一个Observable< boolean>同样,但我没有看到任何关于如何等待,直到解决完成的钩子.
我在这里想念的是什么?我觉得这应该是非常直接的.我目前正在使用angular v4.0.0-rc.2
通过解析在路由器中存储数据开始变得非常尴尬取决于组件的位置(this.route.parent.parent.parent.data.user),所以我们不再使用解析,而是使用NgRx来存储一种信息.
然后我们的警卫负责触发数据的获取,并等待它完成.像这样的东西:
@Injectable() export class AuthenticationGuard implements CanActivate { constructor(private router: Router,private store: Store<ApplicationState>) { } canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot) { this.store.dispatch(new AuthenticateAction()); return this.store .select('auth') .filter((s) => !!s && !s.authenticating) .map((s) => s.authenticated) .take(1); } }
在州内有几个标志(经过身份验证和验证),告诉警卫我们在这个过程中的位置.
以上是大佬教程为你收集整理的angular – canActivate取决于父路线解析全部内容,希望文章能够帮你解决angular – canActivate取决于父路线解析所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。