我遇到問題以正確同步我的過濾器。 至queryParams
的ActivatedRoute
。在那裏我得到了query
和我的三個過濾標準。未檢測到queryparam的更改
ngOnInit() {
this.route
.queryParams
.subscribe(queryParams => {
this._query = queryParams['query'];
this._heightFilter = queryParams['height'];
this._colourFilter = queryParams['colour'];
this._weightFilter = queryParams['weight'];
// Do some request to WS to get the new data
});
}
當過我點擊過濾器,可以說colour:blue
,我打電話給我的reloadPage()
,並給新queryparams
並導航到同一個頁面剛剛與新queryparams
。
private reloadPage(): void {
const queryParams: NavigationExtras = {};
queryParams['query'] = this._query;
//Bring filter arrays into shape for queryParams
this.prepareFiltersForParams(queryParams);
this.router.navigate([], {
queryParams,
});
這工作都很好。現在我們選擇了colour:blue
,但我也想要colour:orange
。我將被添加到queryParams['colour']
,然後包含blue
和orange
。但由於某種原因,orange
是nether添加到該網址,即使它退出queryParams['colour']
。如果我現在添加一個其他條件的過濾器,比如說height
,那麼一切都會很好並且流暢,並且會添加height
過濾器,並且還會添加colour:orange
。
在我看來,this.route.queryParams.subscribe
的change detection
只是沒有拿起queryParams['colour']
的變化,因此只是沒有更新。
我還打開了GH問題angular#17609。
你能爲此做一個蹲點嗎? 「顏色」中只能有一個值,但你是如何添加兩個值的? –
我可以試着把它變成笨蛋。在生長激素我已經更深入地描述了這個問題:https://github.com/angular/angular/issues/17609 – tschaka1904
_你可以只有一個顏色值,但你是如何添加兩個值_? –