Javascript Angular queryParams订阅未激发(复选框用于全部选中)

Javascript Angular queryParams订阅未激发(复选框用于全部选中),javascript,angular,typescript,Javascript,Angular,Typescript,因此,我有一个应用程序,您可以在几个区域中选择要显示数据的区域。在这些区域的复选框上方,我添加了一个主复选框“AllRegions”,obv将选中/取消选中所有其他复选框。 这很好,参数被发布到url和其他所有内容 我唯一的问题是,当我选中/取消选中“AllRegions”复选框时,我的组件不会对参数更改的订阅做出反应。它在取消选中单个区域时有效,但不适用于此“AllRegions”,即使我调用了相同的函数 组成部分: ngOnInit() { this.

因此,我有一个应用程序,您可以在几个区域中选择要显示数据的区域。在这些区域的复选框上方,我添加了一个主复选框“AllRegions”,obv将选中/取消选中所有其他复选框。 这很好,参数被发布到url和其他所有内容

我唯一的问题是,当我选中/取消选中“AllRegions”复选框时,我的组件不会对参数更改的订阅做出反应。它在取消选中单个区域时有效,但不适用于此“AllRegions”,即使我调用了相同的函数

组成部分:

        ngOnInit() {
            this.route.queryParams.subscribe(params => {
            this.loadRegionData();
            })
        }
当我单击复选框时,将调用此代码

this.router.navigateByUrl(this.router.createUrlTree([url], { queryParams: { regions: regionParameters } }));

为什么在我导航ebyurl时没有触发ngOnInit中的订阅?

如果getSelectedRegions返回一个Observable,它将不会被触发,因为您没有订阅它(内部Observable)。我建议您重构为以下内容(asuming route类型为ActivatedRoute):


我也尝试过类似的代码,但这不是我想要的。我更新了我的代码。这与“getSelectedRegions”函数无关。我订阅了route.queryParams,一旦URL中的参数发生变化,我就想编写一些代码。添加了新函数“this.loadRegionData()”,因此这可能更有意义。每当参数改变时,我想再次加载RegionData。这对我的单个复选框非常有效,但由于某些原因,如果同时取消选中所有复选框,订阅不会触发。
ngOnInit() {
        this.route.queryParams
        .switchMap(params => this.regionsService.getSelectedRegions())
        .subscribe(
         //handle *data* and *error*
        );
    }