【问题标题】:How to get url parameter using ActivatedRoute?如何使用ActivatedRoute获取url参数?
【发布时间】:2019-02-12 21:09:15
【问题描述】:

我的路线是:

{
    path: "events",
    component: SkeletonComponent,
    children: [
       {
        path: ':id',
        component: ViewEventComponent
      }     
    ]
}

组件是:

constructor(private activatedRoute: ActivatedRoute) {
   this.activatedRoute.queryParams.subscribe(params => {
     console.log(params);
   })
}

Console.log() 给了我空对象{}

【问题讨论】:

  • 您的网址是什么样的,您是否在网址中传递查询参数?
  • 您需要在“?”之后传递查询参数并用'&'分隔,例如:/events/1?param1=3&param2=4
  • 没有查询参数,你会得到一个空对象
  • 您是否希望获得 :id 代替?

标签: angular


【解决方案1】:

使用activatedRoute.queryParams 将为您提供一个包含查询参数的对象。 如果你的 url 是/events/1?param1=1&param2=2,这个对象就是:

{ param1: '1', param2: '2' }

查询参数是URL中?之后给出的键/值对。

如果您希望在路由配置中定义路由参数,例如 :id,则必须使用 activatedRoute.params 而不是 activatedRoute.queryParams。这将给出一个对象:

{ id: '1' }

对于像/events/1 这样的路由,其中​​路由定义为/events/:id

以下是获取 id 参数的方法:

constructor(private activatedRoute: ActivatedRoute) {
   this.activatedRoute.params.subscribe(params => {
     console.log(params['id']);
   })
}

该值将以字符串形式给出,您可以使用Number(id)+id 将其转换为数字。

如果您不想获取当前路线的 observable,您还可以通过以下方式获取快照:

constructor(private activatedRoute: ActivatedRoute) {
   const id = +this.activatedRoute.snapshot.params['id'];
   console.log(id);
}

【讨论】:

  • 何从 url localhost:4200/events/1 获取 1?
  • 我更新了答案,如果您不想观察路线,我还添加了一个使用快照的示例。希望有帮助!
猜你喜欢
  • 1970-01-01
  • 2017-12-14
  • 2019-08-26
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 2017-08-14
  • 2019-06-05
相关资源
最近更新 更多