我遇到了正确同步过滤器的问题。我subscribe
queryParams
ActivatedRoute
。在那里,我得到query
和我的三个过滤条件。
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
并使用新的{{1}导航到同一页面}。
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
中退出也是如此。如果我现在添加其他条件的过滤器,请说queryParams['colour']
,一切都很顺利,height
过滤器将被添加,height
。
在我看来,colour:orange
的{{1}}只是没有接受change detection
的更改,因此只是没有更新。
我还开了GH问题angular#17609。
答案 0 :(得分:1)
请参阅角度文档https://angular.io/guide/router#activatedroute-the-one-stop-shop-for-route-information。
您可能需要使用switchmap运算符:
由于参数是作为Observable提供的,因此您可以使用switchMap运算符按名称为id参数提供它们,并告诉HeroService获取具有该id的英雄。
switchMap运算符允许您使用Observable的当前值执行操作,并将其映射到新的Observable。与许多rxjs运算符一样,switchMap处理Observable和Promise来检索它们发出的值。
如果用户在仍然检索英雄的同时重新导航到该路线,switchMap运营商也将取消任何正在进行的请求。
从英雄之旅(https://angular.io/tutorial/toh-pt5#revise-the-herodetailcomponent):
switchMap运算符将Observable路由参数中的id映射到新的Observable,即HeroService.getHero()方法的结果。
如果用户在getHero请求仍在处理时重新导航到此组件,则switchMap会取消旧请求,然后再次调用HeroService.getHero()。
答案 1 :(得分:1)
不要使用reloadPage()void,只需使用[routerLink]属性,如下所示:
from pathlib import Path
import shutil
start_path = Path(<start_dir>)
dest_dir = Path(<dest_dir>)
for file in start_path.glob('**/*.jpg'):
new_name = dest_dir.joinpath('_'.join(file.parts))
print('renaming %s to %s' % (str(file), str(new_name)))
# file.rename(new_name) # move
# shutil.copy(file, new_name) # copy, newer python
# shutil.copy(str(file), str(new_name)) # copy, older python
https://angular-2-training-book.rangle.io/handout/routing/routeparams.html
这篇文章可能对您有用