Angular 6 路由参数

标签 angular parameters routing

目前我正在为我的应用程序使用此路由设置:

{
  path: ':group',
  component: ArticleListComponent,
  children: [{
      path: ':subgroup',
      component: ArticleListComponent,
      children: [{
          path: ':chapter',
          component: ArticleListComponent,
          children: [{
              path: ':section',
              component: ArticleListComponent,
              children: [
              ]
            }
          ]
        }
      ]
    }
  ]
},

因为模板和代码不会改变,所以我使用相同的组件来列出文章,但是我想使用url来过滤这些文章。该应用程序应该使用路由参数而不是获取参数。使用这些参数,我想调用一个 API 来获取属于此 url 的文章:/group1/subgroup1/chapter1/section1。

问题是我只能通过以下代码获取这些参数:

const params = this.route.snapshot.params;
// {group: "group1"}

const params = this.route.parent.snapshot.params;
// {}

const params = this.route.firstChild.snapshot.params;
// {group: "group1", subgroup: "subgroup1"}

如何一次获取所有这些参数?

最佳答案

使用查询参数而不是参数。它将大大简化您的路由配置。

routing.ts

{
  path: '',
  component: ArticleListComponent
}

文章列表.component.ts

constructor(route: ActivatedRoute) {
  route.queryParams.pipe(
    map(({ group, subgroup, chapter, section }) => 
      ({ group, subgroup, chapter, section }))
  ).subscribe( ... )
}

关于Angular 6 路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51475877/

相关文章:

java - Angular 6 基本身份验证从客户端返回 401

javascript - 是否可以在 Styles.scss 中动态导入 Variables.scss 文件?

php - PDO 在重复 key 更新时插入

java - 在类构造函数中初始化一个数组

php - YAML 文件不能包含制表符作为缩进

Angular 2 - AppModule 声明的意外模块

angular - 尝试在 Angular 4 应用程序中嵌入要点

angular - 将 Angular 13 用于 Electron 应用程序时如何升级 webpack 5?

c# - 未知类型的动态,这还能如何实现?

javascript - React Router v4 嵌套匹配参数无法在根级别访问