Compare es un único control antes/después, compuesto por tres piezas auxiliares, no cuatro comparadores diferentes. Importa NeuCompareComponent, NeuCompareItemComponent, NeuCompareIndicatorComponent y NeuCompareHandleComponent desde @neural-ui/core/compare. Los ejemplos completos de esta página muestran cómo encajan. La misma ilustración de costa aparece en gris antes y en color después; esos estilos de imagen pertenecen a la aplicación.
Utiliza dos CompareItem, un CompareIndicator y un CompareHandle. position="before" o "after" identifica cada superficie. Acepta valueChange asignando $event.value al valor aplicado; defaultValue es un respaldo, no un estado local persistente. El indicador y el control heredan la orientación y posición del padre y deben estar dentro de Compare.
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.html
<neu-compare
class="remaining-compare"
[value]="position()"
(valueChange)="position.set($event.value)"
(valueChangeEnd)="record('valueChangeEnd', $event.value)"
[orientation]="'horizontal'"
[disabled]="false"
[slideOnHover]="false"
[step]="5"
><neu-compare-item position="before"
><div class="remaining-compare-surface remaining-before remaining-compare-surface--image">
<img class="remaining-compare-image" src="assets/media/coast.svg" [alt]="t('Coastal light before color adjustment', 'Luz de costa antes del ajuste de color')" width="800" height="450" draggable="false" />
<span class="remaining-compare-caption">{{ t("Before", "Antes") }}</span>
</div></neu-compare-item
><neu-compare-item position="after"
><div class="remaining-compare-surface remaining-after remaining-compare-surface--image">
<img class="remaining-compare-image" src="assets/media/coast.svg" [alt]="t('Coastal light after color adjustment', 'Luz de costa después del ajuste de color')" width="800" height="450" draggable="false" />
<span class="remaining-compare-caption">{{ t("After", "Después") }}</span>
</div></neu-compare-item
><neu-compare-indicator
><span class="remaining-compare-line"></span></neu-compare-indicator
><neu-compare-handle
[ariaLabel]="t('Compare position', 'Posición de comparación')"
></neu-compare-handle
></neu-compare
>
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 position = signal(50);
Compón Compare con dos CompareItem, un CompareIndicator y un CompareHandle. position="before" o "after" identifica cada superficie. Acepta valueChange asignando $event.value al valor aplicado; defaultValue es un valor de respaldo, no un estado local persistente. El indicador y el control heredan la orientación y posición del padre y deben estar dentro de Compare. El contenido proyectado pertenece a la aplicación.
Enfoca CompareHandle con Tab. Las flechas ajustan la posición e Inicio/Fin alcanzan los límites. El arrastre propone cambios mediante los mismos Outputs.
Tecla
Acción
Tab
Enfoca el control de rango CompareHandle habilitado.
Arrow keys
Ajusta la posición de la comparación mediante el control de rango.
Inputs, modelos y Outputs se extraen del paquete Core instalado. Los tipos públicos enlazan a sus definiciones. Los Templates incluyen ejemplos ejecutables.
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
defaultValue
number
50
[defaultValue]
Posición de respaldo si value es undefined; no gestiona un valor local persistente.
Informa de la posición al terminar una interacción de puntero o teclado.
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.
Usa los tokens públicos de la referencia. El diseño del contenedor pertenece a tu aplicación; comprueba el resultado en modo claro y oscuro y en espacios estrechos.
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-focus-ring
Anillo normal del foco de teclado
Compartido con otros consumidores de Core; limita el cambio a un ámbito.