2016-11-23 116 views
0

我想用一個可選的整數路由參數來定義單個狀態。在ui路由器中使用輸入的可選路由參數

我已經在我的應用程序定義了以下狀態

$stateProvider.state('configuration', { 
    stateUrl: '/configuration/{id:int}', 
    template: '<div></div>' 
}); 

這工作有一個id例如所有路由/configuration/1,但它不是 適用於沒有id的路由例如/configuration/

如果我把類型定義,就像下面,然後將其路由工作,有或沒有在最後的ID但我結束了一個string ID而不是number

$stateProvider.state('configuration', { 
    stateUrl: '/configuration/:id', 
    template: '<div></div>' 
}); 

是否可以定義一個可選的類型路由參數?

回答

1

我設法通過params選項得到這個工作。

$stateProvider.state('configuration', { 
    stateUrl: '/configuration/{id:int}', 
    params: { id: { value: null, squash: true } }, 
    template: '<div></div>' 
}); 
0

您可以使用'?'使參數可選。

請嘗試以下

$stateProvider.state('configuration', { 
    stateUrl: '/configuration/:id?', 
    template: '<div></div>' 
}); 
+0

但是,然後我會失去的類型定義,它會成爲一個字符串吧? – Alex

+0

是的,你會失去定義。它也會接受字符串。 當我們在路由參數中使用大括號'{}'時,我們不允許使用參數作爲可選或貪婪。 此鏈接可能會幫助你 - https://github.com/angular-ui/ui-router/wiki/URL-Routing –

+0

謝謝,但我是在一個可選的整數參數後。有沒有辦法做到這一點?在ui-router文檔中,它表示'{}'將參數與':'區別對待? – Alex