コンポーネントのオーバーレイ内に仮想スクロールとカスタム検索入力を使用して、angular-material select コンポーネント (v10) に基づいて、カスタムの複数選択コンポーネントを作成しようとしています。mat-select-trigger
また、選択されたアイテムのデフォルトのリストの代わりに、選択されたアイテムの数を表示する要素を追加しました。
(ほぼ完全に機能し、スタイリングなしの) サンプルは、このstackblitzにあります。
私が抱えている問題は、選択したアイテムの表示値に関連しています。
問題を再現するには、次のことを行う必要があります。
- アイテムのリストを検索し (例:
55
)、オプションを選択します (例:item-55
) - オーバーレイの外側をクリックして閉じます
- 予想どおり、コンポーネントが表示
1 selected
され、アイテムが下の [選択されたアイテム]リストに表示されます。 - リストを再度開き、検索フィールド
clear
ボタンをクリックしてから、オーバーレイの外側をクリックして再度閉じます。
コンポーネントは、表示されItems
ているはずのときにプレースホルダーを表示します1 selected
。これは、項目がまだ [選択された項目]リストにあるためです (要素で使用されているのはこのリストですmat-select-trigger
)。
それでも、リストを再度開いて選択した項目 ( item-55
) までスクロールすると、その項目が選択されます。オーバーレイの外側をクリックして再度閉じると、正しい値が表示されます ( 1 selected
)。
仮想スクロール関連の問題であることは理解していますが、解決策や回避策を見つけることができませんでした。
どんな提案でも大歓迎です!