Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Angular2(Typescript)中实现动态路由_Typescript_Angular_Angularjs Routing_Angular2 Routing_Angular2 Template - Fatal编程技术网

在Angular2(Typescript)中实现动态路由

在Angular2(Typescript)中实现动态路由,typescript,angular,angularjs-routing,angular2-routing,angular2-template,Typescript,Angular,Angularjs Routing,Angular2 Routing,Angular2 Template,RouteConfig类可用于装饰具有路由功能的组件(@RouteConfig),该类具有为该组件定义的某些路由定义。现在,关键是在运行时(动态)注入这些路由定义 原因是,假设我有一个应用程序,我必须在其中显示(UI)和定义(修饰)“n”个路由,每个路由对应于加载应用程序的帐户,以及与该特定帐户关联的权限。因此,在decorator@RouteConfig中为组件预定义路由定义没有任何意义 我的方法是在每次加载新帐户时进行服务调用。和仅检索关联的路由并在运行时注入它们,以便导航到与该帐户的UI中

RouteConfig类可用于装饰具有路由功能的组件(@RouteConfig),该类具有为该组件定义的某些路由定义。现在,关键是在运行时(动态)注入这些路由定义

原因是,假设我有一个应用程序,我必须在其中显示(UI)和定义(修饰)“n”个路由,每个路由对应于加载应用程序的帐户,以及与该特定帐户关联的权限。因此,在decorator@RouteConfig中为组件预定义路由定义没有任何意义

我的方法是在每次加载新帐户时进行服务调用。和仅检索关联的路由并在运行时注入它们,以便导航到与该帐户的UI中显示的每个路由对应的其他相应组件

import { Summary } from './components/summary';

@RouteConfig([
  /*
    Let's say we need a seller dashboard to be displayed...
  */
  //{ path: 'SellerDashboard', component: SellerDashboard }
  { path: '/', component: Summary }
])
class App {
    contactInfo: ContactInfoModel;
    public App(dataService: DataService) {
        this.model = dataService.getContactInfo();
    }
}
在上面的代码片段中,假设我希望加载与我的应用程序中的卖方帐户对应的卖方仪表板。现在,它赢了;显示销售点仪表板或与卖家无关的任何东西都没有任何意义(在我们的案例中,卖家的库存仪表板与卖家相关)

在gist中,只注入所需的路由,而不是在同一位置配置所有路由

编辑1:

这个问题有一个简单的用例或场景,而不是在这篇文章上标记的副本(这是后来提出的)。这篇文章中提到的答案有更简单的方法,也更直观。

查看这篇文章:

基本上,作者创建了一个类
DynamicRouteConfigurator
,该类使用Reflect API向
@RouteConfig
装饰器动态添加路由

Github链接:


这是可以做到的,但不是简单的解决办法。看一看,希望有帮助…@Sasxa非常感谢你的帮助。我试了一下,做了一些修改以满足我的需要。好文章!对我来说很有魅力,这符合我的目的。谢谢路线登记现在似乎已被弃用。有没有其他方法可以做到这一点?看看这个问题:它可能会有所帮助