2016-12-12 7 views
1

基本的な要件として、別のルートにリダイレクトして、コンポーネントにパラメータを追加するルートを実装しようとしています。これはアップロード管理のためのものです。パラメータを持つRedirectTo

  • /文書:

    は、実は私たちは二つの経路を持っている文書の一覧を表示

  • /文書/アップロード:ドキュメントのリストを表示し、表示されるアップロードフォームをモーダルボックスを作る

問題は、私が保持する必要があるURLにGETパラメータがあることです。しかし、今は、私はモーダルを閉じると同じページになるので、/ documents/uploadではなく、URLに表示されているルート/ドキュメントのみを混乱させるようにしたいと思います。

だから、私の予想結果はページに行く/ドキュメントは/アップロードしているのですか?FOO = VAR & TOTO = 1234 /ドキュメント?FOO = VAR & toto1234にリダイレクトし、私は開く必要があることを教えする変数を続けるだろうモーダル


私はリダイレクトするように私のガードを作成しましたが、私のqueryParamsがさえ真でpreserveQueryParamsと、保存されていないようです。それは問題なのですか、何か不足していますか?

canActivate(): boolean { 
    this.documentsService._isUploading = true; 
    this.router.navigate(['documents'], { preserveQueryParams: true }); 

    return true; 
} 

そして、私のルート定義:同じ問題に遭遇した人のための

{ path: 'documents', component: DocumentsComponent}, 
{ path: 'documents/upload', component: DocumentsComponent, canActivate: [UploadRedirectionGuard]} 

最終的な解決策:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
    this.documentsService._isUploading = true; 
    this.router.navigate(['documents'], { queryParams: state.root.queryParams }); 

    return true; 
} 

答えて

1

私は、あなたが探していることはhttps://github.com/angular/angular/issues/12664

だと思います

も参照してくださいAngular2 router keep query string

現在、私は、クエリを読み込み、this.router.navigate(...)を呼び出し、ルートに宣言型redirectToの代わりにリダイレクトクエリを再追加ガードのような回避策を使用する必要があると思います。

redirectTo: '...'の代わりにcomponent: MyDummyComponentが必要になる可能性があります。このような場合には、いくつかの変更作業が進行中であるか、すでにリリースされています(分かりません)。

+0

URLのパラメータとしてアップロードしますか? 「隠された」パラメータを渡す可能性はありませんか? DocumentServiceで定義することもできますが、それが良いかどうかはわかりません。 – Sakuto

+0

"非表示"はありません。誰かがページをブックマークしてブックマークから開くと、パラメータが失われます。もちろん、クエリパラメータをサービスに渡してから、他のサービスやコンポーネントがそれを注入してクエリ値を取得できるようにすることができます。 –

+0

実際、リンクは一意になり、生成されます。これは非常に大規模な企業イントラネット向けです。私はサービスパラメータをしっかりと守ります。あなたの役に立つ答えをありがとう! – Sakuto

関連する問題