【问题标题】:use services in Angular 4 router在 Angular 4 路由器中使用服务
【发布时间】:2018-04-24 06:49:35
【问题描述】:

这是我的路线。

export const routes: Routes = [
    {path: '', redirectTo: '/login', pathMatch: 'full'},
    {path: 'login', component: LoginComponent, canActivate: [dbs.ConfigGuard]},
    {path: '**', component: PageNotFoundComponent }
];

export const routing: ModuleWithProviders = RouterModule.forRoot(routes);

我想动态生成path names

点赞{path : xyzService.getKey('login'), component: LoginComponent}

所以,我的问题是,我怎样才能在这里注入我的xyzService 来实现这一点。

【问题讨论】:

    标签: node.js angular typescript angular4-router


    【解决方案1】:

    这对我来说似乎是不可能的,因为您不能以角度在模块中注入服务。在模块中,您只提供服务,然后被注入组件并在此处使用。

    此外,为什么要动态创建路由路径。

    你的用例是什么?

    【讨论】:

    • 我有一个大型应用程序,它完全可以配置为呈现页面。当我们使用多语言功能时,路由器链接也发生了变化,我知道这可能是糟糕的设计,但在我们改变应用程序的核心之前,我们希望它现在可以工作。我的服务有一个资源映射,可以获取键的值,我正在寻找一种构建路由器的方法。
    【解决方案2】:

    巧合的是,我刚刚在 Angular 项目的 repo 上阅读了一个与此相关的 Github 问题:https://github.com/angular/angular/issues/23486

    我认为 Angular 路由器目前不支持动态路由,但这个问题(截至本文发布时,尚未正式回复)应该可以解决您的问题。

    正如有人在该问题中指出的那样,您可能需要在 Angular 路由器之外完成动态路由。 IE。您可以添加通配符路由,该路由指向手动读取 URL 并构建适当视图的组件。基本上,构建你自己的路由器。

    如果您希望您的整个应用程序具有动态路由功能,我认为您可能需要使用与官方 Angular 路由器不同的路由器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      相关资源
      最近更新 更多