私はユーザーが選択するフィルタオプションに基づいてデータを表示するAngular 4コンポーネントを持っています。私はkibanaのようなURLの種類のパラメタとしてフィルタオプションを保存したいと思います。Angularの多くのオプションのパラメータを扱う最良の方法
これらのオプションのパラメータをすべて処理するにはどうすればよいでしょうか。私は私の例で6つのフィルタオプションよりもはるかに多くを持っており、そのコードを扱いにくいものにしています。
現在、私はroute.paramsを購読していて、if文でそれぞれを検索しています。カスタムエフェクトクラスの値をチェックして、イベントエミッタに登録しているURLを作成してナビゲートするには、ここでは、この上の私のテイクは、あなたが配列にあなたの鍵を設定し、取得することができ、両方のように
this.route.params.subscribe((params: Params) => {
for (let param in params) {
this.params[param] = params[param];
}
});
for...in
は、すべてのキーを通過するだろう
this.route.params.subscribe((params: Params) => {
if (params["filter1"]) this.params.filter1 = params["filter1"];
if (params["filter2"]) this.params.filter2 = params["filter2"];
if (params["filter3"]) this.params.filter3 = params["filter3"];
if (params["filter4"]) this.params.filter4 = params["filter4"];
if (params["filter5"]) this.params.filter5 = params["filter5"];
if (params["filter6"]) this.params.filter6 = params["filter6"];
});
this.refreshParams.subscribe((params) => {
let url = {};
if (params.filter1) url["filter1"] = params.filter1;
if (params.filter2) url["filter2"] = params.filter2;
if (params.filter1) url["filter3"] = params.filter3;
if (params.filter1) url["filter4"] = params.filter4;
if (params.filter1) url["filter5"] = params.filter5;
if (params.filter1) url["filter6"] = params.filter6;
this.router.navigate(['/filters', url]);
});
selectFilter(filter1: Filter) {
if (filter1) {
this.params.filter1 = filter1;
} else {
this.params.filter1 = undefined;
}
this.refreshParams.next(this.params);
}