Angular 基于外部数据的动态路由
我正在开发一个需要根据一些外部数据源配置路由的应用程序。应用程序的生命周期如下所示:Angular 基于外部数据的动态路由,angular,angular2-routing,Angular,Angular2 Routing,我正在开发一个需要根据一些外部数据源配置路由的应用程序。应用程序的生命周期如下所示: ng2初始化与应用程序 应用程序包含页眉、路由器出口和页脚 默认路由配置为homeComponent homeComponent具有categoriesListComponent categoriesListComponent从categoriesService调用get方法 categoriesService从api获取类别列表 categoriesComponent呈现列表,并通过RouteConfigu
- ng2初始化与应用程序
- 应用程序包含页眉、路由器出口和页脚
- 默认路由配置为homeComponent
- homeComponent具有categoriesListComponent
- categoriesListComponent从categoriesService调用get方法
- categoriesService从api获取类别列表
- categoriesComponent呈现列表,并通过RouteConfiguration将每个类别的新路由注入应用程序
routerConfigs
。因此,当用户单击一个类别时,路由已经配置了正确的类别组件
+元数据
,并且它们显示了正确的信息
但是,如果直接访问特定的类别页面,ng2还没有该路由的routerConfig
,因为API调用还没有返回任何内容,更不用说触发了。Ng2只呈现带有页眉、页脚和空路由器出口的基本应用程序
我能想到的唯一解决办法是相当“黑客”。在应用服务器上保留一个缓存的json文件,并将其加载到初始html中,然后将其注入ng2 bootstrap/init的服务中。通过这种方式,路由在ng2渲染页面之前配置
我在征求任何其他可能的建议,也许有人有更多的ng2经验,我可以插话。也许这已经解决了,我只是还没有完善我的谷歌fu
提前感谢。在新路由器中(=RC.3
)resetConfig
可用于加载新路由
router.resetConfig([
{路径:'team/:id',组件:TeamCmp,子项:[
{path:'simple',组件:SimpleCmp},
{path:'user/:name',component:UserCmp}
] }
]);
您将有一个自定义的routerLink
指令,或者只有一些链接或按钮,用于在单击加载新路由的位置时调用事件处理程序,然后调用router.navigate(…)
,以导航到适当的路由
提供了一个RC.6Plunker我不知道上面的评论之一是否是您想要的结果的解决方案,但我有一个新方法,可能对您和其他开发人员感兴趣 我创建了一个javascript文件,在其中添加我的路由
"use strict";
const home_component_1 = require("location javascript component file");
exports.DYNAMIC_ROUTES = [
{ path: '', component: your_component_name_component_1.YourComponentName },
]
然后在app.routing.ts
(路由文件)中,必须向javascript文件添加import语句
// JAVASCRIPT IMPORT
import { DYNAMIC_ROUTES } from 'location javascript file';
const appRoutes: Routes = [
{ path: 'home', component: NormalLayoutComponent, children: DYNAMIC_ROUTES },
]
因此,通过使用此方法,您现在可以使用Typescript操作javascript文件以进行动态更改。您甚至可以通过php创建文件,然后将其保存在同一位置。注意,在我的例子中,您需要一个已经编译的组件,它为我处理一个组件中的所有路由
另外,如果您使用的编译器删除了您的javascript,请确保将其读取到构建文件夹或确保它与您的应用程序一起编译。对不起,我没有注意到您的内容中有任何问题<代码>我正在询问其他可能的建议…好的,这太难读了,我只是快速扫描了一下,没有找到任何问号。路由器还不成熟,尽管他们刚刚提出了新的@angular/Router 3.0.0-alpha.3,目前正在为它编写文档。我认为路由应该绑定到组件。如果有一个组件根据某些API调用显示不同的内容,则将其设置为路由参数(
/category/:categoryName
)。您可以在上了解有关路由器的更多信息。组件仍然需要导入语句来导入组件顶部的所有路由。这实际上扼杀了动态路由的目的。e isloadChildren
。我不知道它已经运行得有多好,resetConfig api提供了链接404@GünterZöchbauer这段代码应该放在哪里?我有类似的问题,但我需要调用注入服务来查找允许的路由。您可以将路由器注入该服务,然后您可以调用resetConfig