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 の最初のインストールが成功した後にパスワードを初期化する手順

推薦する

Ubuntu 14.04 に FTP サーバーをインストールするための実装手順

目次インストールソフトウェア管理匿名アクセスモード設定ファイルを変更するクライアントがサーバーにログ...

MySQL マルチテーブルクエリ例の詳しい解説 [リンククエリ、サブクエリなど]

この記事では、例を挙げて MySQL のマルチテーブル クエリについて説明します。ご参考までに、詳細...

Linux Centos7 に mysql8 をインストールするチュートリアル

1. RPMバージョンのインストールデータベースの他のバージョンがあるかどうかを確認し、ある場合は完...

JSはGMTとUTCのタイムゾーンを完全に理解しています

目次序文1. GMT GMTとはGMTの歴史2. UTC UTCとはUTC は次の 2 つの部分で構...

mysql8.0.14.zip のインストール中にデータ フォルダを自動的に作成できませんでした。サービスを開始できません。

今日システムを再インストールした後、コンピューターに mysql を再インストールし、ZIP ファイ...

SQL 文を使用してデータを収集する場合の sum 関数と count 関数の if 判定条件の使用法の説明

まず、例を挙げてみましょう(読みたくない場合は、以下の要約だけ読んでください)。 order_typ...

フォアマン Ubuntu16 クイックインストール

クイックスタートガイドForeman インストーラーは、完全に機能する Foreman セットアップ...

DockerでKafkaをデプロイする方法

目次1. Dockerをビルドする2. コンテナに入る3. 設定ファイルを変更する4. Kafkaを...

JavaScript 配列重複排除問題の詳細な研究

目次序文 👀リサーチを始めましょう🐱‍🏍オリジナル🧶 indexOf を使用した元の方法の最適化 ✍...

Mac で docker と kubectl の自動補完コマンドを追加する方法

kubectl の紹介kubectl は、k8s クラスターを操作するためのコマンドライン ツールで...

Centos7 システム上の nginx サーバーで Phalcon 環境を構築する方法の詳細な説明

この記事では、centos7 システムの nginx サーバーの下に phalcon 環境を構築する...

MySQL インデックス プッシュダウンの詳細

目次1. 左端接頭辞原則2. 表に戻る3. インデックスプッシュダウン序文:インデックス プッシュダ...

ZabbixはLinuxシステムサービスのプロセスを監視

Zabbix は Linux システムのサービス ユニットを監視するためのルールを自動的に検出します...

Centos サーバーで nginx を設定する方法の例

セキュアターミナルMobaXterm_Personalをダウンロードまず、安全なターミナルをダウンロ...

WIN10 システムと Docker 内部コンテナ IP 間の通信方法

1. Windows 版の Docker をインストールしたら、Docker クイックスタート ター...