在查询字符串中使用可选参数的路由

时间:2017-10-13 21:53:00

标签: angular angular-ui-router

我有一种情况,只能在一个值(身份或年龄或性别)中执行搜索。

如果我使用下面只传递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 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
         }
     })
}

是否有更好的方法来重构代码以避免if语句

1 个答案:

答案 0 :(得分:3)

你可以这样做,:

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

上面会给你结果。