2017-10-13 77 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 
    } 
}); 

上述會給你結果。