{{ t.pages.select.cardTitle }}
A demo de select mostra uso com dataSource estável e com projeção manual de opções, reunindo descrição, recursos, limitações e exemplos visíveis no mesmo fluxo.
Descrição
O componente resolve seleção simples com overlay, opção projetada e ligação direta ao ngModel.
Recursos
- Fonte externa com
dataSource. - Projeção manual com
li-option. - Placeholder, itens desabilitados e binding simples.
Limitações
- Evite recriar o
dataSourceem getters reativos. - O overlay depende de opções consistentes para navegação e altura.
- Para lógica pesada de filtro, mantenha a orquestração no componente pai.
{{ t.common.status }}: {{ selectedStatusLabel }}
{{ t.pages.select.projectedStatus }}: {{ projectedStatusLabel }}
Como utilizar
li-select aceita tanto [dataSource]
quanto projeção com li-option.
Para evitar travamentos e ciclos de renderização desnecessários, prefira fornecer listas estáveis no componente pai, em vez de getters que recriam o array a cada mudança de estado.
[dataSource]: lista de opções externas.labelKey: chave usada para o texto visível.valueKey: chave usada como valor do ngModel.disabledKey: chave booleana para desabilitar itens.[(ngModel)]: valor selecionado.[placeholder]: texto exibido quando vazio.
<li-select
[dataSource]="statusOptions"
labelKey="label"
valueKey="id"
disabledKey="disabled"
[(ngModel)]="selectedStatus">
</li-select>
Observações e limites
- Não recrie o
dataSourceem getters. - O overlay não deve calcular altura com base no próprio painel renderizado.
- Eventos globais de teclado devem tratar apenas navegação e escape.
// Bom: lista estável criada uma vez
late final List<Map<String, dynamic>> statusOptions;
// Evite: getter que recria a lista a cada change detection
// List<Map<String, dynamic>> get statusOptions => [...];