2017-10-13 73 views
0

我有一种情况下,搜索可以只执行一个值(id或年龄或性别)。路由与查询字符串中的可选参数

如果我用下面的仅ID传递路线,

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

网址看起来像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语句

+0

恕我直言,这个问题属于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 
    } 
}); 

上述会给你结果。