![](/img/trans.png)
[英]Angular2 pass data from CanActivate guard to Resolve resolver?
[英]Angular2 Resolve before CanActivate
我有一个身份验证服务,它实现了Resolve接口,以返回一个从服务器检索到用户身份验证状态后解析的observable。
此相同的身份验证服务实现CanActivate接口,以阻止用户在未登录的情况下访问组件。
目前,在解析resolve函数之前触发canActivate函数,这意味着它在从服务器检索登录状态之前检查用户的登录状态。
我的问题是,如何在解析resolve之前阻止调用canActivate函数,或者是否有其他方法可以实现我想要的?
谢谢马克斯。
CanActivate总是在设计解决之前运行..
因为解析器应该只在CanActivate警卫完成他们的工作(认证,清理......)之后运行。 当您遵循此模式(见下文)时,通常没有理由反转或更改此顺序。
1. CanActivate (身份验证):
Promise
或Observable
确保解析器等待CanActivate防护完成 。 2.解决 (获取数据):
Promise
或Observable
确保在解析数据可用时加载组件 。 3. constructor / OnInit (使用数据):
ActivatedRoute.snapshot.data
)。 如果,不知何故,你真的需要等待解析器完成, 只需将代码从防护装置移动到解析器 。
您可以在GitHub上的这个帖子中阅读更多相关信息。
canActivate()可以返回一个boolean
, Promise<boolean>
或Observable<boolean>
。
如果返回Promise或Observable,则在将组件解析为true
之前,无法导航组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.