El modelo es number | null, nunca texto formateado. formatOptions configura el idioma, los decimales y la moneda opcional. min/max limitan los valores aceptados; step controla los botones. inputDetail distingue texto válido, incompleto o inválido sin sustituir el modelo confirmado.
Cambia las opciones y prueba la vista previa. Despliega el valor de la aplicación o el evento para consultar los datos reales; el template generado permanece junto al configurador.
Los datos estructurados, callbacks y templates se muestran en los ejemplos y en la API.
El código añade las opciones avanzadas cuando difieren del valor predeterminado. Los datos y valores de esta configuración aparecen en el estado del template.
Template generado: refleja las opciones anteriores. La pestaña Código incluye los imports y el estado.
Estos valores corresponden a la vista previa actual. Los handlers, imports de Core y templates completos están en Código.
configured-state.ts
import { signal } from '@angular/core';
export const number = signal(25);
export const formatOptions = {
"locale": "es-ES",
"style": "decimal",
"maximumFractionDigits": 2
};
Estos inputs requieren un modelo o función, no un checkbox. Modifica el campo del mismo nombre en el componente de Código y enlázalo al template; los datos que ya usa esta vista previa se muestran en el estado anterior.
Enlaza FormField una sola vez al componente; el campo controla el valor y la validación. El esquema exige un valor no vacío. Sal del control para marcarlo como visitado y restablece el campo para limpiar el valor y el estado de interacción.
Utiliza [(value)] o [value] junto con (valueChange), no ambas formas. El modelo sincroniza el estado de la aplicación; los demás Outputs comunican los eventos documentados. touch comunica que se ha visitado o abandonado el control, no un valor nuevo.
Asocia label al campo numérico. Nombra los botones mediante incrementLabel/decrementLabel. ArrowUp/ArrowDown cambia el valor según step; Home/End utiliza los límites configurados. Explica el texto inválido o incompleto con un mensaje, no solo con color.
Los Inputs, modelos y Outputs proceden del contrato de Core fijado. Pulsa un tipo con nombre para abrir su definición. Este componente no tiene templates públicos.
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
ariaDescribedBy
string
''
[ariaDescribedBy]
IDs de los elementos que describen el control, separados por espacios.
ariaLabel
string
''
[ariaLabel]
Nombre accesible cuando no hay una etiqueta visible.
ariaLabelledBy
string
''
[ariaLabelledBy]
IDs de los elementos que nombran el input numérico nativo, separados por espacios.
decrementLabel
string
'Decrease'
[decrementLabel]
Nombre accesible del botón para disminuir.
dirty
boolean
false
[dirty]
Estado del formulario que indica que el usuario ha cambiado el valor.
disabled
boolean
false
[disabled]
Impide la interacción del usuario.
errors
readonly ValidationError.WithOptionalFieldTree[]
[]
[errors]
Errores de validación proporcionados por el formulario o la aplicación.
floatingLabel
boolean
false
[floatingLabel]
Muestra la etiqueta con el estilo de campo float label.
Distribuye los botones en stacked, horizontal o vertical.
max
number | undefined
undefined
[max]
Límite superior para los botones y comandos de teclado. Se conserva el valor escrito; añade la validación max al esquema del formulario para validarlo.
min
number | undefined
undefined
[min]
Límite inferior para los botones y comandos de teclado. Se conserva el valor escrito; añade la validación min al esquema del formulario para validarlo.
name
string
''
[name]
Nombre asociado al control nativo del formulario.
pending
boolean
false
[pending]
Estado del formulario que indica que hay una validación asíncrona pendiente.
readonly
boolean
false
[readonly]
Mantiene el control enfocable y legible sin aceptar cambios.
required
boolean
false
[required]
Marca el campo como obligatorio; utiliza un validador del formulario para exigirlo.
size
"sm" | "md" | "lg"
'md'
[size]
Tamaño visual del campo: sm, md o lg.
step
number
1
[step]
Incremento admitido entre valores.
touched
boolean
false
[touched]
Estado del formulario que indica que el control ha sido visitado.
Models
Un modelo admite [(propiedad)]="signal" o la pareja [propiedad] y (propiedadChange). Elige una de las dos formas, no ambas.
Nombre
Tipo
Por defecto
Uso en el template
Descripción
value
number | null
null
[(value)]
Número confirmado o null si está vacío; sincronizado mediante valueChange.
Outputs
Escucha un evento con (evento)="handler($event)". La tabla indica qué datos recibe tu función y cómo utilizarlos.
Detalle de edición: rawText, estado del análisis y valor numérico confirmado. No sustituye a valueChange.
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.
Este componente no expone proyección de contenido ni templates públicos de personalización.
Public Types
Abre un tipo para consultar su definición y los campos de sus interfaces.
NeuNumberInputDetail.d.ts
import type { NeuNumberInputState } from '@neural-ui/core/number-input';
import type { NeuNumberInputDetail } from '@neural-ui/core/number-input';
// Declaración pública (solo referencia)
export interface NeuNumberInputDetail {
readonly rawText: string;
readonly state: NeuNumberInputState;
readonly value: number | null;
}
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
Token
Efecto
Estado / variante
Valor / origen
Alternativa
--neu-number-input-btn-size
Valor del tema heredado que utiliza este componente
Superficie del campo
2remDeclaración raíz
Sin alias de token
--neu-number-input-height
Valor del tema heredado que utiliza este componente
Superficie del campo
48pxDeclaración raíz
Sin alias de token
--neu-number-input-stacked-min-width
Valor del tema heredado que utiliza este componente
Superficie del campo
120pxDeclaración raíz
Sin alias de token
--neu-number-input-width
Valor del tema heredado que utiliza este componente
Superficie del campo
80pxDeclaración raíz
Sin alias de token
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-focus-ring
Anillo normal del foco de teclado
Compartido con otros consumidores de Core; limita el cambio a un ámbito.