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

推薦する

Linux 上の Vim で色とテーマを変更する方法

Vim は Linux でよく使用されるテキスト エディターです。 Vim は、Sublime や ...

Tomcat は親の委任メカニズムを破壊して Web アプリケーションの分離を実現します。

目次Tomcat クラスローダー階層WebAppクラスローダー共有クラスローダーカタリナクラスローダ...

Vue が学ぶべき知識ポイント: forEach() の使用

序文フロントエンド開発では、目的のコンテンツを取得するためにループをトラバースする必要がある状況に頻...

mysql8.0.21 のダウンロードとインストールに関する詳細なチュートリアル

公式ウェブサイトアドレス: https://www.mysql.com/インストールの提案: インス...

Dockerのローカルイメージ作成方法の分析

コンテナと呼ばれるものは、実際には親イメージに基づいて読み取りおよび書き込み可能なファイル階層を作成...

mysql5.7.14 解凍版インストールと設定方法 グラフィックチュートリアル (win10)

Win10はmysql5.7の解凍版をインストールします。参考までに、具体的な内容は次のとおりです...

MySQL8の再帰メソッドの使い方を教える

以前、カスタム関数を使用して MySQL でツリー構造を再帰的にクエリする方法についての記事を書きま...

Vueスロットの詳細な説明

1. 機能: 親コンポーネントが子コンポーネントの指定された位置に HTML 構造を挿入できるように...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

bodyタグの主な属性の概要

bgcolor="テキストの色" background="背景画像&q...

MySQL 演算子の具体的な使用法 (and、or、in、not)

目次1. はじめに2. 本文2.1 および演算子2.2 または演算子2.3 オペレーター2.4 no...

Webpack-cliが正常にインストールされたら、詳細についてはwebpack -vエラーケースを確認してください。

目次質問1. webpack webpack-cliをインストールする2. webpackのバージョ...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

Mysql-connector-java ドライバのバージョン問題の概要

Mysql-connector-java ドライバのバージョンの問題私のデータベースのバージョンは ...

MySQLで一意のサーバーIDを生成する方法

序文MySQL では、server-id を使用してデータベース インスタンスを一意に識別し、それを...