Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

Angular では、Material コンポーネント ライブラリを開発すると同時に、公式チームが Angular の世界で有名な CDK であるコンポーネント開発キットも開発しました。このツールキットは、フロントエンド開発に共通する多くの機能を提供します。よく知られている Angular コンポーネント ライブラリのほぼすべてがこの開発キットに依存しています。 ANT、PrimeNGなど。

この記事では主に CDK を使用し、CDK のオーバーレイ モジュールを使用してシンプルな Toast コンポーネントを実装します。

1. 環境設備

cdkはAngularのデフォルトモジュールではないので、手動でインストールする必要がありますyarn add @angular/cdk

app.module の cdk に OverlayModule を導入する

'@angular/cdk/overlay' から OverlayModule をインポートします。

@Ngモジュール({
  宣言: [
    アプリコンポーネント
  ]、
  輸入: [
    ブラウザモジュール、
    オーバーレイモジュール
  ]、
  プロバイダー: [],
  ブートストラップ: [AppComponent]
})
クラス AppModule をエクスポートします { }

2. ToastコンポーネントとToastServiceを作成する

  • ng gc Toastコマンドを使用してコンポーネントテンプレートを素早く作成する
  • ng gs Toastを使用してサービステンプレートを作成する

2.1 Toastコンポーネントとスタイルを記述する

トーストコンポーネント

<div class="q-toast">
    <div class="q-toast-mask"></div>
    <p class="q-toast-msg">{{メッセージ}}</p>
</div>

.q-トースト{
  パディング: .2rem .5rem;
  幅: 5rem;
  位置: 相対的;
  ディスプレイ: フレックス;
  flex-direction: 行;
  アイテムの位置を中央揃えにします。
  コンテンツの中央揃え: 中央;
  

  .q-トーストマスク{
    位置: 絶対;
    上: 0;
    左: 0;
    右: 0;
    下部: 0;
    背景色: #000;
    不透明度: .8;
    境界線の半径: 2rem;
  }

  .q-トーストメッセージ{
    色: 白;
    zインデックス: 999;
  }
}

トーストサービス

'@angular/cdk/overlay' から Overlay、OverlayConfig をインポートします。
'@angular/cdk/portal' から ComponentPortal をインポートします。
'@angular/core' から { Injectable、Inj​​ectionToken、Injector } をインポートします。
'./toast.component' から ToastComponent をインポートします。

@Injectable({
  提供元: 'root'
})
クラス ToastService をエクスポートします。

  コンストラクター(プライベートオーバーレイ: Overlay) { }

  表示(メッセージ: 文字列) {
    定数config = 新しいOverlayConfig();
    定数positionStrategy = this.overlay.position()
      .global().centerVertically().centerHorizo​​ntally();
    config.positionStrategy を設定します。
    overlayRef を this.overlay.create(config) とします。
    const inject = Injector.create({
      プロバイダー:
        {
          提供: Toast_Ref、
          使用値:オーバーレイ参照
        },
        {
          提供: Toast_Msg、
          使用値:メッセージ
        }
      ]
    })
    console.log(inject.get<文字列>(Toast_Ref))
    ComponentPortal を新しいものに置き換えます (ToastComponent、null、inject);
    overlayRef.attach(部分)
    タイムアウトを設定する(() => {
      オーバーレイRef.デタッチ()
      オーバーレイRef.dispose();
    }, 2000);
  }

}

エクスポート const Toast_Ref = new InjectionToken<{}>('Toast_Ref');
エクスポート const Toast_Msg = new InjectionToken<{}>('Toast_Msg');

トーストの使用

Service を記述すると、Angular はデフォルトでそれをルート モジュールに挿入します。Toast をポップアップする必要があるコンポーネントの構築メソッドに、対応する ToastService を記述するだけで、正常に実行されます。

クラスAppComponentをエクスポートします。
  コンストラクター(プライベートトースト:ToastService) {
  }
  テスト() {

    this.toast.Show('hello cdk!')
  }
}

GIF効果画像

Angular CDK を使用してサービス ポップアップ Toast コンポーネントを実装する方法についての記事はこれで終わりです。Angular CDK による Toast コンポーネントの実装の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Angular CDK を通じてページ要素のドラッグ アンド ドロップを実装する詳細な手順
  • Angularマテリアルテーマを使用してコンポーネントライブラリの配色を定義します
  • Angular6はステップバーコンポーネントを開発します
  • Angular 2はルーティングを使用してポップアップコンポーネントのトースト操作の例をカスタマイズします
  • Angular2 は SVG を使用してチャート (棒グラフ、折れ線グラフ) コンポーネントの例をカスタマイズします。
  • Angular カプセル化検索ボックス コンポーネントの操作例

<<:  Linuxがすべてのコマンドをサポートしていない問題の解決策

>>:  MySQL の最初のインストールが成功した後にパスワードを初期化する手順

推薦する

Echart Bar の 2 列チャート スタイルの最も完全な詳細な説明

目次序文インストールと設定1. Echartsをインストールする2. Echartsをグローバルに導...

HTTP サーバーとクライアントのやり取りをシミュレートする Node.js+postman

目次1. NodeがHTTPサーバーを構築する2. HTTPサーバーがリクエストを取得する1. Po...

ページのスクロールバーを無効にするには、overflow: hiddenを使用します。

コードをコピーコードは次のとおりです。 html {オーバーフロー: 非表示; }体{オーバーフロー...

DockerはGitを使用してJenkinsのリリースとテストプロジェクトの詳細なプロセスを実装します

目次1. Dockerをインストールする2. カスタムネットワークアドレスを作成する3. Docke...

色の16進数カラーコード表表示と16進値の比較表示で簡単に検索できます

さまざまな色の16進コード表[パート1] 赤とピンク、およびそれらの 16 進コード。 #99003...

WeChatミニプログラムでのマップの正しい使用例

目次序文1. 準備2. 実際の戦闘2.1 ミニプログラムの権限を設定する2.2 カプセル化ツールの機...

DockerプライベートイメージライブラリとAlibaba CloudオブジェクトストレージOSSの簡単な分析

Docker プライベートイメージライブラリDockerプライベートイメージライブラリとAlibab...

JavaScriptはeコマースプラットフォームの製品詳細を実装します

この記事では、電子商取引プラットフォームで商品の詳細を表示する一般的な例を紹介します。たとえば、ある...

JavaScript の setTimeout() の使用法の概要

目次1. はじめに2. setIntervalとsetTimeoutの違い3.タイムアウトを設定する...

Kali Linux インストール VMware ツールのインストール プロセスと VM インストール vmtools ボタン グレー

Xiaobai は vmtools のインストールを記録します。 1. 意義と機能: VMWARE ...

Vue はシームレスなカルーセル効果 (マーキー) を実現します

この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを例として紹介します。...

CSS3 の display:grid、グリッドレイアウトの紹介

1. グリッドレイアウト(グリッド): Web ページをグリッドに分割し、さまざまなグリッドを組み合...

Oracle10パーティションとMySQLパーティションの違いの詳細な説明

一般的に使用される Oracle10g パーティションは、範囲 (範囲パーティション)、リスト (リ...

MySQLトリガーの使用

トリガーにより、ステートメントの実行前または実行後に他の SQL コードを実行できます。トリガーは、...

TypeScript マッピング型の詳細

目次1. マップされた型2. マッピング修飾子3. キーの再マッピング4. さらなる探究序文: Ty...