У меня есть большое приложение, использующее серверную часть, и мы можем сделать заказ, используя параметры запроса:
my-resource? Field1 = asc & field2 = des c даст order by field1 asc, field2 desc
, но иногда я инвертирую эти параметры:
my-resource? Field2 = desc & field1 = as c даст order by field2 desc, field1 asc
поэтому в моем коде у меня есть компонент, который генерирует новые параметры запроса, используя дерево URL-адресов и navigateByUrl
:
url = 'my-resource';
navigateTo() {
this.navigateByUrl(this.getUrlTree())
}
getUrlTree() {
this.router.createUrlTree([this.url], { queryParams: this.orderedQueryParams });
}
И у меня есть другой компонент, который прослушивает изменение queryParams:
constructor(private _route: ActivatedRoute) {}
ngOnInit() {
this._route.queryParams
.takeUntil(this._destroyed$)
.do(async params => {
console.log('params', params);
this.doRequestToResource(params);
}).subscribe();
}
Проблема в том, что при переходе от ?field1=asc&field2=desc
к ?field2=desc&field1=asc
я не получил событие в наблюдаемом queryParams, когда я go от field1=asc&field2=desc
до field1=desc&field2=asc
, оно работает, но если мы попытаемся инвертировать порядок параметров, он не выдает никаких наблюдаемых значений.