詳細ガイド
Angular Aria

リストボックス

概要

ユーザーが選択するためのオプションのリストを表示するディレクティブで、キーボードナビゲーション、単一または複数選択、スクリーンリーダーをサポートしています。

使い方

Listboxは、SelectMultiselectAutocompleteの各パターンで使用される基本的なディレクティブです。ほとんどのドロップダウンのニーズには、代わりにこれらのドキュメント化されたパターンを使用してください。

次のような場合は、listboxを直接使用することを検討してください:

  • カスタム選択コンポーネントの構築 - 特定の動作を持つ特殊なインターフェースを作成する
  • 可視の選択リスト - 選択可能な項目を(ドロップダウンではなく)ページに直接表示する
  • カスタム統合パターン - 独自のポップアップやレイアウト要件と統合する

次のような場合は、listboxの使用を避けてください:

  • ナビゲーションメニューが必要な場合 - アクションやコマンドにはMenuディレクティブを使用してください

機能

Angularのリストボックスは、以下の機能を備えた完全にアクセシブルなリスト実装を提供します:

  • キーボードナビゲーション - 矢印キーでオプションを移動し、EnterキーまたはSpaceキーで選択
  • スクリーンリーダーのサポート - role="listbox"を含む組み込みのARIA属性
  • 単一選択または複数選択 - multi属性で選択モードを制御
  • 水平または垂直 - orientation属性でレイアウト方向を指定
  • 先行入力による検索 - 文字を入力して一致するオプションにジャンプ
  • シグナルベースのリアクティビティ - Angularシグナルを使用したリアクティブな状態管理

基本的なリストボックス

アプリケーションでは、ドロップダウンに隠すのではなく、ページ上に直接表示される選択可能なリストが必要になることがあります。スタンドアロンのリストボックスは、これらの表示されるリストインターフェースに対して、キーボードによるナビゲーションと選択機能を提供します。

valuesモデルシグナルは、選択されたアイテムへの双方向バインディングを提供します。selectionMode="explicit"では、ユーザーはSpaceキーまたはEnterキーを押してオプションを選択します。リストボックスとコンボボックス、オーバーレイ配置を組み合わせたドロップダウンパターンについては、Selectパターンを参照してください。

水平リストボックス

ツールバーのようなインターフェースやタブ形式の選択など、リストは水平方向に配置した方がうまく機能する場合があります。orientation属性は、レイアウトとキーボードナビゲーションの方向の両方を変更します。

orientation="horizontal"の場合、上下の矢印キーの代わりに、左右の矢印キーでオプション間を移動します。リストボックスは、ナビゲーションの方向を反転させることで、右から左へ記述する言語 (RTL) に自動的に対応します。

選択モード

リストボックスは、アイテムがいつ選択されるかを制御する2つの選択モードをサポートしています。インターフェースのインタラクションパターンに合ったモードを選択してください。

'follow'モードはフォーカスされたアイテムを自動的に選択し、選択が頻繁に変わる場合に、より速いインタラクションを提供します。'explicit'モードでは、選択を確定するためにSpaceキーまたはEnterキーが必要で、ナビゲーション中の意図しない変更を防ぎます。ドロップダウンパターンでは、通常、単一選択のために'follow'モードが使用されます。

API

Listboxディレクティブ

ngListboxディレクティブは、選択可能なオプションのアクセシブルなリストを作成します。

入力

プロパティ デフォルト 説明
id string auto リストボックスの一意の識別子
multi boolean false 複数選択を有効にします
orientation 'vertical' | 'horizontal' 'vertical' リストのレイアウト方向
wrap boolean true リストの端でフォーカスをラップするかどうか
selectionMode 'follow' | 'explicit' 'follow' 選択がどのようにトリガーされるか
focusMode 'roving' | 'activedescendant' 'roving' フォーカス管理戦略
softDisabled boolean true 無効化されたアイテムがフォーカス可能かどうか
disabled boolean false リストボックス全体を無効にします
readonly boolean false リストボックスを読み取り専用にします
typeaheadDelay number 500 先行入力の検索がリセットされるまでのミリ秒

モデル

プロパティ 説明
values V[] 選択された値の双方向バインディング可能な配列

シグナル

プロパティ 説明
values Signal<V[]> 現在選択されている値(シグナルとして)

メソッド

メソッド パラメータ 説明
scrollActiveItemIntoView options?: ScrollIntoViewOptions アクティブなアイテムを表示領域にスクロールします
gotoFirst none リストボックスの最初のアイテムに移動します

Optionディレクティブ

ngOptionディレクティブは、リストボックス内のアイテムをマークします。

入力

プロパティ デフォルト 説明
id string auto オプションの一意の識別子
value V - このオプションに関連付けられた値(必須)
label string - スクリーンリーダー用のオプションのラベル
disabled boolean false このオプションが無効かどうか

シグナル

プロパティ 説明
selected Signal<boolean> このオプションが選択されているかどうか
active Signal<boolean> このオプションにフォーカスがあるかどうか

Listboxは、これらのドキュメント化されたドロップダウンパターンで使用されます:

  • Select - 読み取り専用のcombobox + listboxを使用した単一選択のドロップダウンパターン
  • Multiselect - multiを使用した読み取り専用のcombobox + listboxによる複数選択のドロップダウンパターン
  • Autocomplete - combobox + listboxを使用したフィルタリング可能なドロップダウンパターン

トリガー、ポップアップ、オーバーレイの配置を含む完全なドロップダウンパターンについては、listboxを単独で使用するのではなく、それらのパターンガイドを参照してください。