所以讲故事和它的中断点:我想从路线中读取查询参数,并设置带有初始值的过滤器复选框。这确实适用于下面的代码(ngOnInit
)。我要做的下一件事是在检查过滤器后更新路由查询参数。这也适用于下面的代码(filterChanged
+ navigate
)。
问题来了:
当我同时激活两个部分时,将正确设置初始值,在选择/取消选择时会触发事件,甚至navigate
承诺也会完成,但URL中的查询参数不会得到更新。 / p>
我很高兴为此提供任何帮助
请在下面查看我的编码:
在我的sidebar.component
中,我从onInit
的路由中读取查询参数,如下所示(订阅routedata,并且对于每个过滤器,读取并设置queryParameters或使用{{ 1}}):
[]
因此,接下来将 ngOnInit() {
this.route.data.subscribe(data => {
this.filters = data[RouteData.filter]
this.filters.forEach((filter: Filter) => {
this.route.queryParamMap.subscribe(queryMap => {
const active = queryMap.getAll(filter.entity)
this.activeFilters[filter.entity] = active ? active : []
})
})
})
}
和this.activeFilters
传递到html中包含复选框的组件:
this.filters
因此,只要复选框的值之一发生更改,就发出该 <filter *ngFor="let filter of filters"
[filter]="filter"
[active]="activeFilters[filter.entity]"
(selection)="filterChanged(filter.entity, $event)">
{{filter.label}}
</filter>
的整个当前选择并随后导航到该位置。
filter.entity