Angular モーダルコンポーネント | ng-hub-ui-modal

スタッキング、フルスクリーンモード、テンプレート、キーボード処理、CSS 変数を備えたアクセシブルな Angular モーダルコンポーネント。standalone アプリ向けです。

API リファレンス

modal の完全な仕様をここにまとめました。バインド、リッスン、プロジェクション、テーマ設定ができるすべてが一か所に集約されています。必要なものを接続し、好きなようにスタイリングしてください — standalone で signal フレンドリーです。

インプット

14 個のインプットで modal を調整。通常の Angular @Input と同じようにバインドできます。

名前デフォルト説明
animationbooleantrue の場合、モーダルの開閉がアニメーションされます。デフォルト: true
backdropboolean | "static"true の場合、バックドロップ要素が作成されます。あるいは "static" を指定すると、クリックでモーダルが閉じないバックドロップになります。デフォルト: true
centeredbooleantrue の場合、モーダルは垂直方向に中央揃えされます。デフォルト: false
placementHubModalPlacementビューポート内のモーダルの配置位置を制御します。デフォルト: HubModalPlacement.Center
keyboardbooleantrue の場合、Escape キーが押されるとモーダルが閉じます。デフォルト: true
closeOnNavigationbooleantrue の場合、ユーザーがブラウザ履歴を戻ったとき(history.back()、ブラウザの戻るボタン)にモーダルが閉じます。デフォルト: true
size"sm" | "lg" | "xl" | stringモーダルウィンドウのサイズ
windowClassstringモーダルウィンドウに付加するカスタムクラス
backdropClassstringモーダルのバックドロップに付加するカスタムクラス
dismissSelectorstringモーダルウィンドウの dismiss をトリガーできる要素のカスタムセレクタ。デフォルト: "[data-dismiss=\"modal\"]"
closeSelectorstringモーダルウィンドウの close をトリガーできる要素のカスタムセレクタ。デフォルト: "[data-close=\"modal\"]"
headerSelectorstringモーダルウィンドウのヘッダー要素のカスタムセレクタ
footerSelectorstringモーダルウィンドウのフッター要素のカスタムセレクタ
dataanyモーダルウィンドウを開くときに渡す追加データ

アウトプット

modal の動作に反応 — ロジックを接続できる 1 個のイベント。

名前説明
dismissanyユーザーがモーダルを dismiss したとき(Escape キーを押す、バックドロップをクリックする、組み込みの閉じるボタンを押すなど)にモーダルウィンドウから発行されます。ペイロードは dismiss の理由です(ModalDismissReasons.ESC、ModalDismissReasons.BACKDROP_CLICK、またはカスタム値)。

メソッド

modal をコードから操作 — プログラム操作のための 17 個のメソッドを備えています。

名前シグネチャ戻り値説明
HubModal.openopen<C, R, D>(content: Type<C> | TemplateRef<any> | string, options?: HubModalOptions<D>): HubModalRef<C, R>HubModalRef<C, R>指定されたコンテンツ(コンポーネント型、TemplateRef、または文字列)とオプションで新しいモーダルウィンドウを開き、それを制御するための HubModalRef を返します。コンテンツコンポーネントは HubActiveModal と HUB_MODAL_DATA トークンを注入して、モーダルとやり取りしたり data ペイロードを読み取ったりできます。
HubModal.dismissAlldismissAll(reason?: any): void現在表示されているすべてのモーダルウィンドウを、指定された理由で dismiss します。
HubModal.hasOpenModalshasOpenModals(): booleanbooleanアプリケーション内に現在開いているモーダルウィンドウがあるかどうかを示します。
HubModal.activeInstancesactiveInstances: EventEmitter<HubModalRef[]>EventEmitter<HubModalRef[]>モーダルが開かれるか削除されるたびに、現在開いている HubModalRef インスタンスのリストを発行するイベントエミッター。
HubModalRef.closeclose(result?: R): void省略可能な結果値とともにモーダルを閉じます。HubModalRef.result の Promise は指定された値で解決されます。
HubModalRef.dismissdismiss(reason?: any): void省略可能な理由の値とともにモーダルを dismiss します。HubModalRef.result の Promise は指定された値で拒否されます。beforeDismiss ガードが設定されている場合はそれに従います。
HubModalRef.updateupdate(options: HubModalUpdatableOptions): void開いているモーダルのオプション(aria 属性、centered、placement、fullscreen、backdropClass、size、variant、windowClass、modalDialogClass)を更新します。
HubModalRef.componentInstancecomponentInstance: C | voidC | voidモーダルコンテンツとして使用されたコンポーネントのインスタンス。コンテンツに TemplateRef を使用した場合や、モーダルが閉じられている場合は undefined を返します。
HubModalRef.resultresult: Promise<R>Promise<R>モーダルが閉じられたときに close の結果で解決され、dismiss されたときにその理由で拒否される Promise。
HubModalRef.closedclosed: Observable<R>Observable<R>モーダルが閉じられたときに、close() に渡された結果を発行する Observable。
HubModalRef.dismisseddismissed: Observable<any>Observable<any>モーダルが dismiss されたときにその理由を発行する Observable — dismiss() に渡された値、またはバックドロップクリックや Escape などの内部的な理由です。
HubModalRef.shownshown: Observable<void>Observable<void>モーダルが完全に表示され、開くアニメーションが終了した時点で発行して完了する Observable。
HubModalRef.hiddenhidden: Observable<void>Observable<void>モーダルウィンドウとバックドロップの両方が非表示になり、アニメーションが終了し、それらの要素が DOM から削除された時点で発行して完了する Observable。
HubActiveModal.closeclose(result?: R): voidコンテンツコンポーネントをホストしているモーダルを閉じ、HubModalRef.result の Promise を省略可能な結果値で解決します。
HubActiveModal.dismissdismiss(reason?: any): voidコンテンツコンポーネントをホストしているモーダルを dismiss し、HubModalRef.result の Promise を省略可能な理由の値で拒否します。
HubActiveModal.updateupdate(options: HubModalUpdatableOptions): voidコンテンツコンポーネントの内側から、開いているモーダルのオプションを更新します。
HubActiveModal.datadata: DDHubModalOptions.data を通じて渡される型付きペイロード。HUB_MODAL_DATA トークンを注入するのと同等で、data オプションが指定されなかった場合は null になります。

テンプレート

自分好みに — 1 個のテンプレートスロットでカスタムマークアップをプロジェクションできます。

名前説明サンプル
Modal Templateモーダルサービスに渡せるテンプレート参照<ng-template #modalTemplate let-close="close" let-dismiss="dismiss"> <div class="modal-header"> <h4 class="modal-title">Modal Title</h4> </div> <div class="modal-body"> Modal content goes here </div> <div class="modal-footer"> <button class="btn btn-secondary" (click)="dismiss()">Cancel</button> <button class="btn btn-primary" (click)="close('result')">OK</button> </div> </ng-template>