Cada padre abre sus hijos. El modelo cambia cuando se elige un nodo final seleccionable. Los nodos usan label, value y children opcional; los accessors admiten otras estructuras de dominio.
Usa la acción de volver o la ruta de navegación para cambiar de nivel sin crear un segundo valor de selección.
Enlaza FormField al control que gestiona el valor y añade required al esquema del formulario. Selecciona un destino, sal del campo para marcarlo como visitado y restablécelo para comprobar el valor y la validación. La marca de obligatorio no valida por sí sola el formulario.
Cambia las opciones e interactúa con el control. La vista previa, el valor de la aplicación y el template generado permanecen juntos. Un destino deshabilitado permite comprobar que no se pueden seleccionar opciones no disponibles.
Usa una sola fuente de verdad: [(value)]="destination" o [value]="destination()" junto con (valueChange)="destination.set($event)". No combines las dos formas de enlace.
Los Inputs configuran el control. valueChange sincroniza su modelo; los demás Outputs comunican las acciones o fases documentadas. Las solicitudes de sugerencias, hijos o ventanas remotas requieren que la aplicación proporcione los datos.
Utiliza una etiqueta visible o un nombre accesible. Prueba la navegación por teclado, las opciones deshabilitadas, la selección y el cierre del panel. Los templates de opción deben conservar texto descriptivo y no introducir botones ni otro checkbox enfocable dentro de la opción.
Tecla
Acción
Tab
Mueve el foco hacia dentro o fuera del control.
ArrowDown / ArrowUp
Mueve la opción activa entre las opciones disponibles.
La referencia muestra los Inputs, modelos, Outputs y Templates públicos del paquete de Core fijado. Pulsa un tipo con nombre para abrir su definición. Cada Template aplicable tiene un ejemplo ejecutable y su código real.
Inputs
Configura el componente con [propiedad]="valor". Tu aplicación proporciona estos valores; el componente no debe reemplazar el estado que le pasas.
Nombre
Tipo
Por defecto
Uso en el template
Descripción
backAriaLabel
string
'Back to previous level'
[backAriaLabel]
Etiqueta accesible para volver al nivel superior.
breadcrumbAriaLabel
string
'Cascade levels'
[breadcrumbAriaLabel]
Nombre accesible de la ruta de antecesores.
clearable
boolean
false
[clearable]
Muestra la acción de limpiar cuando hay un valor seleccionado.
clearAriaLabel
string
'Clear selection'
[clearAriaLabel]
Nombre accesible del botón para limpiar la selección.
compareWith
(left: V, right: V) => boolean
Object.isValor derivado
[compareWith]
Función para comparar valores seleccionados; utiliza una identidad de dominio estable.
dirty
boolean
false
[dirty]
Estado del formulario que indica que el usuario ha cambiado el valor.
disabled
boolean
false
[disabled]
Deshabilita la interacción del usuario; las opciones deshabilitadas no se pueden seleccionar.
emptyLabel
string
'No options found'
[emptyLabel]
Mensaje que se muestra cuando no hay opciones disponibles.
errors
readonly ValidationError.WithOptionalFieldTree[]
[]
[errors]
Errores de validación proporcionados por el formulario o la aplicación.
hidden
boolean
false
[hidden]
Oculta el control según el estado del formulario.
invalid
boolean
false
[invalid]
Muestra el estado inválido; no añade una regla de validación.
Opción activada, su valor y el evento que la ha activado.
touch
void
(touch)="onTouch($event)"
Notifica al formulario que el control ha sido visitado; no es un cambio de valor.
Templates
ng-content proyecta contenido dentro del componente. Los inputs TemplateRef reciben un template; las directivas ng-template identifican templates con un contexto tipado. Una directiva compartida en el entrypoint no es necesariamente un slot de este componente.
import type { NeuOptionAccessor } from '@neural-ui/core/option-api';
import type { NeuOptionDisabledAccessor } from '@neural-ui/core/option-api';
// Declaración pública (solo referencia)
export type NeuOptionDisabledAccessor<T> = NeuOptionAccessor<T, boolean>;
NeuOptionLabelAccessor.d.ts
import type { NeuOptionAccessor } from '@neural-ui/core/option-api';
import type { NeuOptionLabelAccessor } from '@neural-ui/core/option-api';
// Declaración pública (solo referencia)
export type NeuOptionLabelAccessor<T> = NeuOptionAccessor<T, string>;
NeuOptionPath.d.ts
import type { NeuOptionPath } from '@neural-ui/core/option-api';
// Declaración pública (solo referencia)
export type NeuOptionPath<T> = Extract<keyof T, string> | `${Extract<keyof T, string>}.${string}`;
Carga los estilos de Core una sola vez. Utiliza los tokens públicos para personalizaciones locales o un preset para cambios de toda la aplicación. Conserva la legibilidad de etiquetas, foco, opciones seleccionadas y estados deshabilitados en modo claro y oscuro.
Tokens específicos
Este componente utiliza tokens compartidos del tema en lugar de tokens específicos.
Tokens compartidos utilizados
Sobrescríbelos en un contenedor local para afectar a este ejemplo. Una modificación en :root afecta a los demás componentes que utilizan el mismo token.
Token
Efecto aquí
Otros efectos
Valor / alternativa
--neu-border
Bordes normales de controles y celdas
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
rgba(15, 23, 42, 0.08)
--neu-primary
Color de marca en controles activos y énfasis
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#007aff
--neu-radius
Radio de las esquinas del control
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
8px
--neu-surface
Superficie principal del campo, cabecera o control
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#ffffff
--neu-text
Color del texto principal y de los iconos que lo heredan
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#0f172a
--neu-text-muted
Etiquetas secundarias y contenido de ayuda
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#475569
--neu-border-subtle
Valor del tema heredado que utiliza este componente
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
var(--neu-border)
--neu-shadow-lg
Elevación de la superficie o capa
Compartido con otros consumidores de Core; limita el cambio a un ámbito.