2017-06-07 3 views
1

データを表示する領域を複数選択できるアプリケーションがあります。それらの地域のチェックボックスの上に、私はメインチェックボックス "AllRegions"を追加しました。他のすべてのチェックボックスを選択/選択解除します。 これはうまくいきます、パラメータはURLとすべてに投稿されます。角度クエリパルサムサブスクリプションが起動しません(すべてチェックボックスがチェックされています)

「AllRegions」チェックボックスをオンまたはオフにしたときの唯一の問題は、コンポーネントがパラメータ変更のサブスクリプションに反応しないことです。単一の領域のチェックを外すと機能しますが、同じ関数を呼び出してもこの "AllRegions"では機能しません。

コンポーネント:私は、チェックボックスをクリックしたときに

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

このコードが呼び出されます。

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

なぜ私がnavigateByUrlを実行したときにngOnInitのサブスクリプションが起動しないのですか?

答えて

1

getSelectedRegionsがObservableを返すと、それを購読していないため(内部で観察可能)、トリガされません。

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

は、私はあまりにも同様のコードを試してみましたが、それは私が探しているものではないのです。私はあなたが以下にリファクタリングすることをお勧めします(asumingルートタイプActivatedRouteです)。 私のコードを更新しました。これは "getSelectedRegions"関数に関するものではありません。 私はroute.queryParamsを購読しました。そして、URLのパラメータが変更されるとすぐに私はいくつかのコードを行いたいと思います。新しい関数 "this.loadRegionData()"が追加されました。 パラメータが変わるたびに、私は再度RegionDataをロードしたいと思います。 これは私の単一のチェックボックスではうまくいきましたが、何らかの理由で、すべてのチェックボックスが同時にチェックされていなければ、サブスクリプションは起動しません。 – YamahaFTW

関連する問題