ion-route-redirect
ルートリダイレクトは ion-router
を直接の子としてのみ使うことができます。
Note: このコンポーネントは、vanilla と Stencil での JavaScriptプロジェクトでのみ使用してください。Angularプロジェクトでは、ion-router-outlet
と Angularルータを使用してください。
ルートリダイレクトには、2つの設定可能なプロパティがあります。
from
to
これは、ある URL から別の URL へとリダイレクトします。定義された ion-route-redirect
ルールがマッチすると、ルータは from
プロパティで指定されたパスから to
プロパティで指定されたパスへリダイレクトします。リダイレクトを行うには、from
のパスがナビゲートされる URL と完全に一致する必要があります。
複数ルートのリダイレクト
任意の数のリダイレクトルートを ion-router
の内部で定義することができますが、合致するのは1つだけです。
ルートリダイレクトは、それ自身のリダイレクトの後に別のリダイレクトを呼び出すことはありません。
次の2つのリダイレクトを考えてみましょう。
<ion-router>
<ion-route-redirect from="/admin" to="/login"></ion-route-redirect>
<ion-route-redirect from="/login" to="/admin"></ion-route-redirect>
</ion-router>
ユーザーが /admin
に移動した場合、ルーターは /login
にリダイレクトし、そこで停止します。複数のリダイレクトを評価することはありません。
使い方
<!-- Redirects when the user navigates to `/admin` but
will NOT redirect if the user navigates to `/admin/posts` -->
<ion-route-redirect from="/admin" to="/login"></ion-route-redirect>
<!-- By adding the wilcard character (*), the redirect will match
any subpath of admin -->
<ion-route-redirect from="/admin/*" to="/login"></ion-route-redirect>
ルートリダイレクトのガード
リダイレクトルートは、ユーザーが認証されているかどうかなど、与えられた条件に基づいて、ユーザーがアプリケーションの特定の領域に移動するのを防ぐためのガードとして機能することができます。
ルートリダイレクトは動的に追加・削除することができ、一部のルートをアクセスできないようにリダイレクト(ガード)することができます。次の例では、 isLoggedIn
が false
の場合、すべての URL *
は /login
にリダイレクトされます。
const isLoggedIn = false;
const router = document.querySelector('ion-router');
const routeRedirect = document.createElement('ion-route-redirect');
routeRedirect.setAttribute('from', '*');
routeRedirect.setAttribute('to', '/login');
if (!isLoggedIn) {
router.appendChild(routeRedirect);
}