Angular 2.5如何在路由参数中传递/

标签 angular angular2-routing angular5

我用谷歌搜索了这个问题,但没有成功。

是否可以使用“/”作为路由参数的一部分?例如,我有以下路线:

{
    path: 'pages/:page',
    component: HomeComponent
}

我想将 folderName/Page 传递到 :page 参数中,所以如下: /pages/testFolder/testPage 将匹配上述路径。

我无法创建额外的路由,因为这需要是动态的(即 /pages/folder/folder/folder/folder/folder/folder/page)。

如果可行,请告诉我。

我已经尝试了 Forward Slash in Angular Route Parameters 中的步骤并尝试使用 url-matcher,但没有成功。

谢谢!

最佳答案

您可以像下面这样设置您的路线来解决您的问题,

  {
    path: 'pages',
    children: [
      {
        path: "**", component: PagesComponent
      }
    ]
  }

所以这里所做的基本上是任何以 pages/... 开头的路径都将被此路由拦截。

要从您的 URL 获取不同的段,您可以在您的组件中使用以下内容,

constructor(route: ActivatedRoute) {
   route.url.subscribe(segments => // use segments as suitable );
}

因此根据您的网址,分割会有所不同,

路线 :/pages/Folder1/Page1

分割

 [ { "path": "Folder1", "parameters": {} }, { "path": "Page1", "parameters": {} } ]

路线:/pages/Folder2/Folder3/Page1

分割

[{“路径”:“Folder2”,“参数”:{}},{“路径”:“Folder3”,“参数”:{}},{“路径”:“Page1”,“参数” : {} } ]

这里是 StackBlitz example !!

你必须考虑的一件事是通配符路由会吸收任何以 pages/开头的东西,所以让它放在最后。

关于Angular 2.5如何在路由参数中传递/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102032/

相关文章:

Angular 在 HTML 模板中使用 lodash

Angular 、延迟加载、模块间依赖、最佳实践

具有动态形式的 Angular 5 Mat-Stepper

angular - 如何将微调器与 *ngFor async 一起使用

Angular 4如何在删除子组件中的项目后更新父组件

Angular 8惰性路由在父级之前解析有或没有前缀和重定向

html - 列表元素的动态宽度计算

html - 如何在 Angular2 (ngx) 中通过 css 选择器找到元素?

javascript - 在 typescript 中返回实体数组的最简洁方法是什么?

带有子路由的 Angular 将子组件加载到父组件下面,而不是将其重定向到另一个 View