Angular queryParams订阅不会触发(复选框用于全部检查)

时间:2017-06-07 14:31:01

标签: javascript angular typescript

所以我有一个应用程序,您可以在几个要显示数据的区域之间进行选择。在这些区域的复选框上方,我添加了一个主复选框" AllRegions"哪个obv。选择/取消选中所有其他复选框。 这工作正常,参数被发布到网址和所有这些。

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

组件:

        ngOnInit() {
            this.route.queryParams.subscribe(params => {
            this.loadRegionData();
            })
        }

单击复选框时会调用此代码。

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

为什么我在浏览导出时不会触发ngOnInit中的订阅?

1 个答案:

答案 0 :(得分:1)

如果getSelectedRegions返回一个Observable,它将不会被触发,因为你没有订阅它(内部可观察)。我建议你重构以下内容(假设路由的类型为 ActivatedRoute ):

ngOnInit() {
        this.route.queryParams
        .switchMap(params => this.regionsService.getSelectedRegions())
        .subscribe(
         //handle *data* and *error*
        );
    }