Route Guard による Angular 学習ルートの簡単な分析

青灯夜游
リリース: 2021-12-16 19:29:38
転載
3819 人が閲覧しました

この記事では、Angular のルート ガードについて学び、ルート ガードの作成方法、ルートをアクティブ化できるかどうかの制御、およびルートの終了が可能かどうかの制御方法を紹介します。

Route Guard による Angular 学習ルートの簡単な分析

環境:

  • Angular CLI: 11.0.6

  • 角度: 11.0.7

  • ノード: 12.18.3

  • npm : 6.14.6

  • IDE: Visual Studio Code

##実際のビジネス開発プロセスでは、次の要件に遭遇することがよくあります。

    #これは必要です。特定の URL へのアクセスを制限します。たとえば、システム管理インターフェイスの場合、管理者権限を持つユーザーのみが開くことができます。 [関連チュートリアルの推奨事項: "
  • angular チュートリアル

    "]

  • ユーザーが編集インターフェイスを使用していて、保存せずに終了する場合、ユーザーは編集インターフェイスを放棄するかどうかを尋ねるプロンプトを表示する必要があります。修正。
  • 上記のシナリオでは、Angualr は
Route Guards

(ルート ガード) を使用して実装します。 ルート ガード

1. ルート ガードの作成Angular CLI は、ルート ガードを迅速に作成できるコマンド ライン ツールを提供します。ルーティング ガード フレームワーク ファイル:

ng ガード認証を生成します

。実行後、Angular CLI はどのインターフェイスを実装する必要があるかを尋ねます。それを直接確認するだけです: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">? Which interfaces would you like to implement? (Press &lt;space&gt; to select, &lt;a&gt; to toggle all, &lt;i&gt; to invert selection) &gt;(*) CanActivate ( ) CanActivateChild ( ) CanDeactivate ( ) CanLoad</pre><div class="contentsignin">ログイン後にコピー</div></div> 説明:

    CanActivate: ルートが実行できるかどうかを制御します。 be activate
  • CanActivateChild: サブルートをアクティブ化できるかどうかを制御します
  • #CanDeactivate: ルートを終了できるかどうかを制御します
  • #CanLoad : モジュールをロードできるかどうかを制御します。
  • より一般的に使用されるのは 1 と 3 で、それぞれ開始と終了を制御します。上記の設定に従って、AngularCLI は次のコードを自動的に生成します。
  • return true;
は実際のコードに置き換えることができます。

return false; ジャンプや現在のページからのキャンセルが許可されていないことを示します。

// auth.guard.ts
import { Injectable } from &#39;@angular/core&#39;;
import { CanActivate, CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from &#39;@angular/router&#39;;
import { Observable } from &#39;rxjs&#39;;

@Injectable({
  providedIn: &#39;root&#39;
})
export class AuthGuard implements CanActivate, CanDeactivate<unknown> {
  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    return true;
  }
}
ログイン後にコピー
canActivate メソッドでは、ジャンプも使用できます。たとえば、このページでは、ログインしているかどうかが判断されます。ログインしていない場合は、ログイン ページにジャンプします:
this.router.navigate([&#39;/login&#39;]);
return false;
ログイン後にコピー

#2. ルーティングをアクティブ化できるかどうかを制御します

ルートをアクティブ化できるかどうかの制御は、ルートを定義し、canActivate 属性を追加する場所で定義する必要があります。必要に応じて、現在のルートに入るためにどの権限を確認する必要があるかを AuthGuard に指示するなど、データ属性を追加することもできます。 data 属性はオプションです。

const routes: Routes = [
  {
    path: "page1",
    component: Page1Component,
    data: { permissions: [&#39;YourPage1Permission&#39;] },  // 传入参数给AuthGuard,可选
    canActivate: [AuthGuard]
  },
  {
    path: "page2",
    component: Page2omponent,
    data: { permissions: [&#39;YourPage2Permission&#39;] },  // 传入参数给AuthGuard,可选
    canActivate: [AuthGuard]
  }
]
ログイン後にコピー

3. ルートが終了 (退出) するかどうかの制御

は、ルートをアクティブ化できるかどうかの制御と似ています。 canDeactivate をルート定義に追加し、対応する Guard ガードを定式化します。これ以上の例はありません

概要

ルート ガードを介して URL の出入りを制御します。

  • Angular CLI が役立ちますガード ファイルの作成は私たちに任せてください;

  • プログラミング関連の知識の詳細については、

    プログラミング入門

    をご覧ください。 !

以上がRoute Guard による Angular 学習ルートの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート