角度4:通过查询参数设置初始值会导致onChange导航循环

时间:2019-01-14 08:16:00

标签: angular typescript routing angular2-changedetection

所以讲故事和它的中断点:我想从路线中读取查询参数,并设置带有初始值的过滤器复选框。这确实适用于下面的代码(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

0 个答案:

没有答案