CanActivate
class允许返回Observable<boolean>
。
对我而言唯一有意义的用例是:
CanActivate
可以“异步”阻止显示的路由,直到调用observer.next(true|false)
。 CanActivate
允许的路由,然后从我的应用程序的另一部分推送observer.next(false)
,并使该路由消失。 但是,第一点有效,但第二点无效。因此,除了方便性之外,我找不到
CanActivate
应该允许返回Observable<boolean>
的类型的原因-这反过来使API复杂化。如果CanActivate
只允许boolean
返回类型和Promise
会更干净。请注意,我是Angular,RxJS和所有基于Node的人的新手,所以我可能会错过显而易见的东西。我花了一段时间尝试从
CanActivate
返回类型所隐含的Observer<boolean>
中提取功能。 最佳答案
在AngularJS 2中,几乎每个异步操作都返回Observable。因为您可以实现自己的CanActivate,所以您可能希望通过服务器访问来实现。例如,检查服务器中的管理员凭据。您可以看到类似的示例here。
如果此方法返回了 bool(boolean) 数据类型,则需要阻塞该页面。
关于javascript - 为什么Angular 2的CanActivate返回一个Observable <boolean>而不是Promise?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38883203/