基本的な要件として、別のルートにリダイレクトして、コンポーネントにパラメータを追加するルートを実装しようとしています。これはアップロード管理のためのものです。パラメータを持つ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;
}
URLのパラメータとしてアップロードしますか? 「隠された」パラメータを渡す可能性はありませんか? DocumentServiceで定義することもできますが、それが良いかどうかはわかりません。 – Sakuto
"非表示"はありません。誰かがページをブックマークしてブックマークから開くと、パラメータが失われます。もちろん、クエリパラメータをサービスに渡してから、他のサービスやコンポーネントがそれを注入してクエリ値を取得できるようにすることができます。 –
実際、リンクは一意になり、生成されます。これは非常に大規模な企業イントラネット向けです。私はサービスパラメータをしっかりと守ります。あなたの役に立つ答えをありがとう! – Sakuto