我有一个功能正常的Angular 5拦截器用于身份验证,但我想添加身份验证服务的容量,以便能够在继续之前检查本地存储以获取身份令牌。不幸的是,我发现应用程序加载速度非常快,应用程序正在使用拦截器进行调用,然后身份验证服务才能更新其状态以宣布它在本地存储中找到了令牌。
在我看来,我应该能够制作第二个拦截器,它位于第一个拦截器之前,并且在我看到身份验证服务ready$
可观察的移动之前不允许任何事件发生。如果我在回调环境中操作,我会理解如何安排这个 - 等待承诺解决,一旦它解决触发回调并流入链的下一个链接 - 但我不知道如何如果我希望返回Observable<HttpEvent>
,那就让它工作。
authService.ready$
是BehaviorSubject
,false
启动complete()
,一旦服务的构造函数完成,我就找到了一个令牌({1}}。 AuthenticationInterceptor
侦听authService.token$
以获取要注入呼叫的详细信息。我敢肯定这第二个拦截器只是几行,但我对rxjs不够熟悉才能得到这个。有什么想法吗?
编辑:似乎我想要使用(实验?)APP_INITALIZER提供商,除非有问题。 Angular4 APP_INITIALIZER won't delay initialization ......我是否在正确的轨道上?
答案 0 :(得分:0)
顶层NgModule中的APP_INTIALIZER,即可以访问bootstrap的那个,就是答案。