2017-02-21 4 views
2

これは本当に簡単な問題のように思えるが、それは狂気私を運転だ...hrefのオプションの動的パラメータ

すると、私は、ダイナミックを指定することができますどのように誰もが知っています。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: request, params.bind: { id: someProp }" 

注:あなたはこのルートを使用してリンクのルートを生成したい場合は、このようroute-hrefカスタム属性を使用することができます)を使用して、ルート命名規則に一致させます。

+0

ただし、ルート設定で** href **属性を削除しても問題ありませんか? 'ERROR [app-router] Error:":id?/ requestAuth "の経路設定が無効です:動的経路はナビゲーションモデルに含める" href: "を指定しなければなりません.' – Themos

+1

'nav:true'プロパティが設定されているからです。このようなルートをnav barなどの何らかの形で使用する予定がない場合は、それを削除すればルータは不平を言います。 –

+0

しかし、Navバーで使用したいのですが? – Themos

0

私も同様の使用例がありました。私は、この設定を変更するルータにパイプラインステップを追加することで、これを動作させることができました。

ルートがアクティブなときにアイテムがナビバーに表示されるようにしたい場合があります。アクティブルートがABCの場合は、/abc/def/:id/ghiのルートがあります。またはGHIの場合、それらのアイテムだけがナビゲーションバーに表示されますが、アクティブなルートがDEFの場合は、ナビゲーションバーに表示され、クリックすると現在表示されているDEF IDと同じになります。したがって、私のルート設定には、アクティブなルートの場合にのみ、ナビゲーションバーにルートを表示するように設定する設定が含まれています。ここで

は私の実際のconfigureRouter機能の興味深い部分です:私とは違って、あなたがこれをしたい、場合

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

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 
    ]); 
} 

そしてここでは、予備活性化にHREFを設定しますPreactivateクラスです。ナビゲーションバーに常時表示するには、これは動作します - hrefは、ルートがアクティブだったときに設定された最後のものに設定されたままです。その場合、おそらくそれを理にかなったデフォルト値に初期化したいと思うでしょう。

関連する問題