2017-12-06 1 views
1

私は4番めの新しいページです。あるタブから別のタブまたは別のナビゲーションバーに切り替えると、 「あなたは確かに移動しますか?」という質問のポップアップダイアログが表示されます。私がOKを押したとき、それは望ましいタブ/ナビ(最後にクリックされたURL)に行くべきです。そうでなければ、同じページに留まるべきです。ポップアップを確認する前にクリックしたURLを取得する方法はアンギュラ4になります。

私は今、私は[OK]ボタンを押すと上の目的のタブにリダイレクトするかどうかは確認していない他のナビゲーションバー{ path: 'exception/:id', component: LpExceptionComponent , canDeactivate: [CanDeactivateGuard]}

にタブ/スイッチを去る前にダイアログをポップアップし、CanDeactivateGuardを使用していますか? ここで最後にクリックされたURLをどのように取得しますか?

+0

ルータにタブがありますか?もしそうなら、私はそれらを実装しているので、明日までに解決策を提供します。このコメントに返信してください:) :) – Aravind

+0

はい、タブはルータにあります。私はcanDeactivate関数を使用して、新しいダイアログでnextStateUrlを取得することもできましたが、そのダイアログの[OK]ボタンをクリックした後、 nextStateUrlにナビゲートできません。それがなぜ機能していないのか分かりません。 –

答えて

1

おそらくURLを知る必要はありません。 canDeactivate関数から約束を返すことができます。そして、ユーザーがOKをクリックすると、約束を真に解決し、自動的に遷移が続きます。あなたが約束を超えることを望むなら、オブザーバブルもサポートされます。

しかし、あなたは、ユーザーがに行くしようとしている状態を知っておく必要があるならば、それはcanDeactivate機能(最初の3つのパラメータは、コンポーネント、currentRouteであること、そしてcurrentStateの)

に四番目のパラメータとして提供していますこちらのドキュメントをご覧ください:https://angular.io/api/router/CanDeactivate

+0

ありがとうニコラス!私はcanDeactivate関数の4番目のパラメータを使用しており、状態のユーザーを取得できるようになりましたが、okをクリックするとこのURLに移動することはできません。ルータのナビゲーションがそのダイアログでのみ動作している理由がわからない –

関連する問題