我正在编写一个WidgetList
,其中包含查询参数(包括分页数据),该参数可以从URL查询参数中读取/写入。但是它也有一个选择,它可以向URL片段写入/从中读取。
为了方便起见,我同时订阅了queryParams
和fragment
:
this.route.queryParamMap.subscribe((queryParamMap) => { handleQueryChange }
this.route.fragment.subscribe((queryParamMap) => { handleFragmentChange }
但是,对此组件的某些操作将导致分页和选择同时更改(即queryParams
和fragment
都需要在单个router.navigate
调用中进行更改)。事实证明,上述订户模型存在问题。
handleQueryChange
和handleFragmentChange
中的逻辑会更改,具体取决于片段和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中写入/读取...