2017-10-13 10 views
0

検索は1つの値(IDまたは年齢または性別)のいずれかしか実行できないシナリオがあります。クエリ文字列にオプションのパラメータを含むルート

私は唯一のIDが渡されたルートの下に使用している場合は、

this.router.navigate(['details'], 
{ 
    queryParams: 
    { 
     id: this.id, 
     age: this.age, 
     sex: this.sex, 
    } 
}) 

URLがhttp://path/details?id=10&age=&sex=

のようになります。私は上のid = 10?私のURLが

パス/詳細のようになりたいです年齢検索のid検索

パス/詳細?年齢= 25

だから私は

if(this.id) { 
    this.router.navigate(['details'], 
    { 
     queryParams: 
     { 
      id: this.id 
     } 
    }) 
}else if(this.age){ 
    this.router.navigate(['details'], 
    { 
     queryParams: 
     { 
      age: this.age 
     } 
    }) 
}else if(this.sex){ 
    this.router.navigate(['details'], 
    { 
     queryParams: 
     { 
      sex: this.sex 
     } 
    }) 
} 

あなたは、単にこの、行うことができます声明

+0

IMHO、この質問はhttps://codereview.stackexchange.comに属します –

答えて

2

場合は避けるようにコードをリファクタリングすることがより良い方法である、と私のコードをリファクタリング:上記

this.router.navigate(['details'], 
{ 
    queryParams: 
    { 
     id: this.id || null, 
     age: !this.id && this.age || null, 
     sex: !this.id && !this.age && this.sex || null 
    } 
}); 

はあなたを与えるだろう結果。

関連する問題