我如何同时(或至少以明确定义的顺序)检测queryParams和片段中的变化?

问题描述 投票:0回答:2

我正在编写一个WidgetList,其中包含查询参数(包括分页数据),该参数可以从URL查询参数中读取/写入。但是它也有一个选择,它可以向URL片段写入/从中读取。

为了方便起见,我同时订阅了queryParamsfragment

this.route.queryParamMap.subscribe((queryParamMap) => { handleQueryChange }
this.route.fragment.subscribe((queryParamMap) => { handleFragmentChange }

但是,对此组件的某些操作将导致分页和选择同时更改(即queryParamsfragment都需要在单个router.navigate调用中进行更改)。事实证明,上述订户模型存在问题。

handleQueryChangehandleFragmentChange中的逻辑会更改,具体取决于片段和queryParams是否已更改,或者只是其中之一。但是,这些订户彼此完全不可知,因此尚不清楚如何做到这一点。理想情况下,我可以通过以下方式订阅完整的URL更改:

this.route.url.subscribe((change) => { if (change.fragmentChanged() && change.queryParamChanged()) { ... } else if (change.fragmentChanged()) { ... } else if (change.queryParamChanged()) { ... } }

[在AngularJS中,我只是查看完整URL中的更改,然后将其手动解压缩到queryParams和片段中,但是我在这里找不到方法。

[如果我能在文档中看到queryParams / fragment订阅者中的一个总是在另一个订阅者之前执行,我可以使它工作。

有解决方案吗?

我正在编写一个WidgetList,它具有查询参数(包括分页数据),该参数可以从URL查询参数中读取/写入。但是它也有一个选择,它可以从URL中写入/读取...

angular
2个回答
0
投票
对于“路由完整URL更改”,有很多内容需要查找。端口号,域名,上下文路径,查询参数,数据等]

0
投票
[也许,只是尝试将片段和参数与rxjs结合使用。像这样的东西:
© www.soinside.com 2019 - 2024. All rights reserved.