Javascript 从URL/查询字符串预加载角度组件

Javascript 从URL/查询字符串预加载角度组件,javascript,angular,routing,Javascript,Angular,Routing,在我的Angular应用程序中,我有一个组件,在其中加载从API返回的一些数据的网格视图。我在组件上还有一些过滤器,用户可以利用这些过滤器过滤返回的数据 这一切都按预期工作——直到用户导航离开,然后返回到组件。此时,将不再应用过滤器选择。换句话说,组件在其“原始”状态下重新加载,就好像没有选择任何过滤器一样 所以我想我需要做的是使用ngOnInit()从浏览器窗口读取url状态——因为此时所有过滤器都仍然存在,作为查询字符串的一部分,如下所示: http://localhost:4200/con

在我的Angular应用程序中,我有一个组件,在其中加载从API返回的一些数据的网格视图。我在组件上还有一些过滤器,用户可以利用这些过滤器过滤返回的数据

这一切都按预期工作——直到用户导航离开,然后返回到组件。此时,将不再应用过滤器选择。换句话说,组件在其“原始”状态下重新加载,就好像没有选择任何过滤器一样

所以我想我需要做的是使用ngOnInit()从浏览器窗口读取url状态——因为此时所有过滤器都仍然存在,作为查询字符串的一部分,如下所示:

http://localhost:4200/consulting;page=1;pn_firstName.e=1;pn_firstName.v=John;pn_lastName.e=;pn_lastName.v=
根据上面的url/查询字符串,数据应该在“firstName”:“John”上过滤后加载

所以,我的问题是,在ngOnInit中从url预加载时,语法看起来是什么样的?像这样的

ngOnInit() {
   this.router.navigateByUrl(`consulting/${}`); // Should be current url/query string in the browser window
}
基本上,我只需要知道当我希望从浏览器窗口中url/查询字符串的当前状态动态读取时,语法应该是什么样子。因为,通过这种方式,应用的任何过滤器在重新加载组件时都会相应地工作——因为它们在查询字符串中仍然可用

更新:

在下面的评论之后,我想我可以这样做:

constructor(private route: ActivatedRoute) {}
然后,因为这是一个可观察的
,我会做一些类似的事情:

ngOnInit() {
    this.loadData()
}

loadData() {
    this.router.navigate([this.route.queryParams.toArray()]);
}

类似这样的操作是否有效?

activatedRoute:activatedRoute
注入组件中,查询参数可以通过
activatedRoute.queryParams
activatedRoute.queryParamMap
获得


这是一个仅呈现查询参数的函数,您可以使用。

谢谢,我在上面添加了一些代码作为后续操作,但我想我会更新它,使其看起来更像您的示例中的函数。当我尝试使用ParamMap时,它找不到它。这在Angular 2中有吗?没有。它在angular 4+中可用。但您可以在angular 2中使用
queryParams
queryParamMap
只是访问查询参数的新方法和首选方法。是的,我认为您可以在Angular 2中使用queryParams。