2017-10-13 72 views
1

以用户全局对象为例。对于没有刷新浏览器的单页网页应用程序,第一项可能会填充服务中的用户对象。尽早以角度实例化服务

但是,说,该网址仍被用作链接去应用程序的不同路线。在什么时候,在路由中使用用户对象的每个组件都应该从服务器加载用户对象?由于服务异步加载user,因此当前路由中的这些组件在该用户对象可用之前肯定能够获得用户?

我可能会问错误的问题,因为我想解决这个问题。所以我的想法是,如果我可以在所有其他组件之前先加载服务对象,那么它就解决了。

我想如果我把服务放在app.component.ts中,但没关系。其他组件仍在实例化,而用户仍然undefined

回答

4

您可以使用APP_INITIALIZER确保在Angular初始化应用程序之前加载该值,或者可以使用延迟路由直到数据可用的警卫。

+0

我已经测试了这个解决方案见。有用。但是,这仍然是角码标记为实验性的?在我看来,除了这个实现我想要的东西外别无选择 - 无论输入什么路由,都要实例化一些服务。 https://github.com/angular/angular/blob/4.4.5/packages/core/src/application_tokens.ts#L64-L64 – Hao

+0

它被标记为实验没有多大意义。他们可能会考虑最终重新设计这个功能,但是自2.0.0-alpha以来,它一样。 –