2016-10-07 6 views
0

URL内に提供されたパラメータに基づいて、子ルータでいくつかのルートを動的に生成しようとしています。子ルータを設定するときにurlパラメータにアクセスする方法

だから私はそのルートで構成された私のメインのルータがあります。 mydomain.com/#/page/ :モジュールをロードしているページ「ページ」

をそして、私のモジュールのページに、私はconfigureRouter機能を持っていますその子ルータにそれらを追加する前に、URLで指定されたページへの相対的なセクションをフェッチすることになっている:

public async configureRouter(config, router){ 
    page = ??? 
    sections = wait fetchPageSections(page) 
    //for each section, add route in child router 
} 

ここに私の問題は、を取得する方法です:ページパラメータ、これが利用できるようになりますので、のみ(もし私が()はconfigureRouter()の後に呼び出されます。しかし、ルートのその部分はすでに親ルータで "マッチ"されているので、configureRouter関数でそれを取得する方法があるはずです。

ありがとうございました。

答えて

1

configureRouter()メソッドで:pageパラメータを取得する方法があるかどうかはわかりませんが、わかっている限り、この時点では新しいルートはまだトリガーされていません。

created()メソッドで:pageパラメータを取得できます。

created() { 
    let page = this.router.parentInstruction.params.page; 
    // do something and add routes 
    //this.router.addRoute({ route: "test", moduleId: "test", nav: true, title: "test" }); 
    //this.router.refreshNavigation(); 
} 

第2のオプションは、グローバルオブジェクトを使用して目的のパラメータを保持することです。このオブジェクトをビューコンポーネントのconstructor()メソッドに挿入することができます。しかし、これは過度の使用で安全ではありません。私はそれが良い考えだとは思わない。

第三の選択肢、そして私の意見では最も簡単な1は、ダイナミックルートのmapUnknownRoutes()を使用している:

router.configure(config => { 
    config.mapUnknownRoutes(instruction => { 
    //read the instruction.fragment to get 
    //you can return a promise and make async requests 
    return instruction; 
    }); 
}); 

私はこれが役に立てば幸い!

+0

私はソリューション1と3の組み合わせを実装しました。作成された()メソッド(ページパラメータにアクセスすると)にルートをロードし、mapUnknownRoutes()を使用して空のセクションにリダイレクトします読み込まれていない。 – Nono

1

あなたが渡されたルータconfigureRouter(config, router)が子ルータです。幸運にも、それはparentプロパティがあり、あなたに必要なものを提供します。

router.parent.currentInstruction.params.pageは、親ルータのpageパラメータを探している必要があります。

+0

私はそれを試みましたが、残念ながら親モジュールのcurrentInstructionはまだ子モジュールのconfigureRouter関数を入力するとnullです...私はそれがactivate関数を呼び出す前に設定すると思う... – Nono

+0

それは私のために働いた。私はyaを表示する要点を作成します:-) –

関連する問題