我正在构建一个用户可以选择要使用的页面的cms。因此,如果用户想要一个联系页面,他们会选择它并为其填写一些内容,例如他们的网站将有contact
路由。基于此,是否可以根据用户是否想要特定页面动态添加角度路线?
答案 0 :(得分:36)
是。有多种方法可以实现您的需求。您可以使用router.resetConfig
使用新配置重置路由器的配置:
this.router.resetConfig([
{ path: 'somePath', component: SomeComponent},
...
]);
您还可以push
路由到配置:
this.router.config.push({ path: 'somePath', component: SomeComponent });
我做到这一点的另一种方式是我已经设法让用户可以使用类似TinyMCE的东西来构建页面,并指定他们希望页面具有的url路径。在Angular中,我在路由器中使用{ path: '**', component: ComponentBuilder }
指定了一个通配符路由,其中ComponentBuilder组件将从数据库中获取与某人请求的路径对应的模板,然后使用模板动态生成组件。如果数据库中不存在模板,则会呈现正常的Page cannot be found
模板。
两种方式都有效。它归结为您希望应用程序如何运行以及如何构建用户创建的页面。
自从我在第2版rc4中提出的解决方案以来,有很多关于如何创建动态组件的文档和示例。我没有使用过这些,但它看起来很有帮助:
NPM package for Dynamic Components
Angular Docs on Dynamic Component Loader