【发布时间】:2016-10-11 21:21:00
【问题描述】:
我正在开发一个需要基于某些外部数据源配置路由的应用程序。应用的生命周期如下所示:
- ng2 使用 App 初始化
- App 包含 Header、router-outlet 和 Footer
- 默认路由配置为 homeComponent
- homeComponent 有 categoriesListComponent
- categoriesListComponent 从 categoriesService 调用 get 方法
- categoriesService 从 api 获取类别列表
- categoriesComponent 呈现列表并通过 routesConfigurator 将每个类别的新路由注入到 App 中
实际上还有另一层抽象层,带有 routesService,但本示例不需要这样做
这部分工作,因为我们从主页开始,API 调用并为每个类别创建了routerConfigs。所以当用户点击一个类别时,路由已经配置了正确的categoryComponent + metadata,并且显示了正确的信息。
但是,如果直接访问特定类别页面,ng2 还没有该路由的routerConfig,因为 API 调用没有返回任何内容,更不用说触发了。 Ng2 只是渲染带有 Header、Footer 和一个空的 router-outlet 的基本 App。
我能想到的唯一解决方案是相当“hacky”。在应用服务器上保留一个缓存的 json 文件并将其加载到初始 html 中,然后将其注入到 ng2 bootstrap/init 的服务中。这样路由就在 ng2 甚至是渲染页面之前配置好了。
我正在寻求任何其他可能的建议,也许有更多 ng2 经验的人可以加入。也许这已经解决了,只是我的 google-fu 还不够完善。
提前致谢。
【问题讨论】:
-
抱歉,我在您的内容中没有发现任何问题?!
-
I'm asking for any other possible suggestions... -
好吧,就是看的太多了,我就赶紧扫了一遍问号,没找到。
-
Router 仍然不成熟,尽管他们刚刚提出了新的新 @angular/router 3.0.0-alpha.3 并且目前正在为其编写文档。
-
我认为路由应该绑定到组件。如果您有一个组件根据某些 API 调用显示不同的内容,则将它们设为路由参数 (
/category/:categoryName)。您可以在victorsavkin.com/post/145672529346/angular-router 了解有关路由器的更多信息。