2017-02-21 188 views
2

這似乎是一個很簡單的問題,但它的駕駛我瘋了...動態參數config.map

有誰知道我可以指定動態:在id參數href路由配置選項?

以下遺憾的是不起作用:

config.map([ 
     // ... default parameterless routing here 
     { 
      route:[':id/request'], 
      moduleId:'processes/bdd/request/request', 
      name:'Request', title:'Request', href:`#/bdd/request/${id}/request`, settings:{type:'Request', icon:''}, nav:true, 
     }, 
     { 
      route:[':id/requestAuth'], 
      moduleId:'processes/bdd/request/requestauthorization', 
      name:'RequestAuthorization', title:'Request Authorization', href:`#/bdd/request/${id}/requestAuth`, settings:{type:'Request', icon:''}, nav:true, 
     }, 
     // ... some additional mappings here 
    ]); 

回答

3

href屬性是靜態的。如果你想通過這種途徑來生成一個鏈接的路線,你可以使用route-href自定義屬性是這樣的:

route-href="route: request, params.bind: { id: someProp }" 

注意,我改變了路線名稱是駝峯(全部小寫,因爲它是在這裏一個字)以匹配路由命名約定。

+0

但是,如果我在路由配置中刪除** href **屬性?如果我試圖刪除它,我會得到以下錯誤:'ERROR [app-router]錯誤:「:id?/ requestAuth」的路由配置無效:動態路由必須指定要包含在導航模型中的「href:」 。' – Themos

+1

那是因爲你有'nav:true'屬性集。如果你不打算在某種形式的導航欄或類似的東西中使用這條路線,那麼刪除它,路由器將停止抱怨。 –

+0

但是如果我想在導航欄中使用它呢? – Themos

0

我有一個類似的用例,我可以通過向路由器添加一個流水線步驟來改變配置。

我的使用情況而定在我只希望該項目出現在當路由是活動的導航欄有點不同 - 說我有路線/abc/def/:id,並且/ghi - 當活動的路線是ABC或GHI,只有那些項目纔會出現在導航欄中,但是當活動路線是DEF時,它應該出現在導航欄中,並且點擊它應該導致您正在查看的DEF ID。因此,我的路線配置包含一個設置,該設置指示路線應當僅在導航欄中顯示,當它是活動路線時。

這裏是我的實際configureRouter功能的有趣的部分:

configureRouter(config, router) { 
    config.addPreActivateStep(Preactivate); // explained below 
    config.map([ 
    // some routes 
    { route: 'patients/:patientId', name: 'patient-master', 
     moduleId: 'patients-and-cases/patient-master/patient-master', 
     title: 'Patient', nav: true, settings: { renderOnlyWhenActive: true }, 
     href: '#' // it doesn't matter what this is 
    }, 
    // more routes 
    ]); 
} 

這裏是Preactivate類,設置在預活化的href:

class Preactivate { 
    run(routingContext, next) { 
    routingContext.config.href = routingContext.fragment; 
    return next(); 
    } 
} 

如果,不像我,你想要這個要始終顯示在導航欄中,這仍然有效--HREF將簡單地保持設置爲路由處於活動狀態時設置的最後一項內容。在這種情況下,您可能需要將其初始化爲一些有意義的默認值。