Descripción general del componente de casilla de verificación Angular
Angular Checkbox es una extensión de la casilla de verificación de tipo de entrada HTML estándar, que proporciona una funcionalidad similar, solo que mejorada con elementos como animaciones y estilo de Material Design. Permite a los usuarios elegir una o varias opciones predefinidas, principalmente en formularios y encuestas.
El componente Ignite UI for Angular Checkbox es un control de selección que permite a los usuarios realizar una elección binaria para una determinada condición. Se comporta de manera similar a la casilla de verificación del navegador nativo. Algunas de las características que ofrece son opciones de estilo, temas, estados marcados, no marcados e indeterminados, entre otras.
Angular Checkbox Example
Vea la casilla de verificación en acción en el siguiente ejemplo de casilla de verificación Angular a continuación.
Getting Started with Ignite UI for Angular Checkbox
Para comenzar con el componente Ignite UI for Angular Checkbox, primero debe instalar Ignite UI for Angular. En una aplicación Angular existente, escriba el siguiente comando:
ng add igniteui-angular
Para obtener una introducción completa a la Ignite UI for Angular, lea el tema de introducción.
El siguiente paso es importar IgxCheckboxModule
en el archivo app.module.ts:
// app.module.ts
import { IgxCheckboxModule } from 'igniteui-angular';
// import { IgxCheckboxModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxCheckboxModule],
...
})
export class AppModule {}
Alternativamente, a partir de 16.0.0
puede importar IgxCheckboxComponent
como una dependencia independiente.
// home.component.ts
import { IgxCheckboxComponent } from 'igniteui-angular';
// import { IgxCheckboxComponent } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: `
<igx-checkbox [checked]="true">
Simple checkbox
</igx-checkbox>
`,
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IgxCheckboxComponent]
})
export class HomeComponent {}
Ahora que ha importado el módulo o componente Ignite UI for Angular Checkbox, puede comenzar a usar el componente igx-checkbox
.
Using the Angular Checkbox Component
Para marcar la casilla en la demostración, agregue el siguiente código dentro de la plantilla del componente:
<igx-checkbox [checked]="true">
Simple checkbox
</igx-checkbox>
Checkbox properties
Mejoremos el código anterior vinculando las propiedades de la casilla de verificación a algunos datos. Digamos que tenemos una serie de objetos de tarea, cada uno con dos propiedades: descripción y listo. Puede vincular la propiedad marcada del componente de casilla checked
a la propiedad realizada del objeto de tarea subyacente. De manera análoga, puede vincular la propiedad value
a la descripción. Opcionalmente, también puede vincular el evento change
y agregar alguna lógica personalizada en el método del controlador de eventos proporcionado.
// tasks.component.ts
@Component({...})
export class HomeComponent {
public tasks = [
{ done: true, description: 'Research' },
{ done: true, description: 'Implement' },
{ done: false, description: 'Test' }
];
public statusChanged() {
// event handler logic
}
}
Mejore la plantilla del componente agregando una casilla de verificación para cada tarea y luego configurando los enlaces de propiedad correspondientes:
<!--tasks.component.html-->
<igx-checkbox *ngFor="let task of tasks" [checked]="task.done">
{{ task.description }}
</igx-checkbox>
Añade algunos estilos:
//task.component.scss
:host {
display: flex;
flex-flow: column nowrap;
padding: 16px;
}
igx-checkbox {
margin-top: 16px;
}
El resultado final sería algo así:
Label Positioning
Puede colocar la etiqueta usando la propiedad labelPosition
de la casilla de verificación:
<igx-checkbox labelPosition="before"></igx-checkbox>
Si no se establece labelPosition
, la etiqueta se colocará después de la casilla de verificación.
Indeterminate Checkbox in Angular
Además de los estados marcado y no marcado, hay un tercer estado en el que puede estar una casilla de verificación: indeterminado. En este estado, la casilla de verificación no está marcada ni desmarcada. Esto se establece usando la propiedad indeterminate
de la casilla de verificación:
<igx-checkbox [indeterminate]="true"></igx-checkbox>
Podemos crear una aplicación que tenga una lista de tareas que deben realizarse y una casilla de verificación maestra en Angular que se marcará solo si se completan todas las tareas. Actualicemos el ejemplo anterior. Comenzando con la plantilla:
<!-- app.component.html -->
<igx-checkbox
[readonly]="true"
[(ngModel)]="masterCheckbox.checked"
[(indeterminate)]="masterCheckbox.indeterminate"
(click)="toggleAll()"
>
All done
</igx-checkbox>
<igx-checkbox class="tasks" *ngFor="let task of tasks" [(ngModel)]="task.done">
{{ task.description }}
</igx-checkbox>
A continuación, vamos a sangrar las subtareas, para que sea más visual que forman parte del mismo grupo.
// app.component.scss
:host {
display: flex;
flex-flow: column nowrap;
padding: 16px;
}
igx-checkbox {
margin-top: 16px;
}
igx-checkbox.tasks {
padding-left: 10px;
}
Y finalmente, crearemos la lógica de nuestra aplicación:
// app.component.ts
public tasks = [
{ done: true, description: 'Research' },
{ done: true, description: 'Implement' },
{ done: false, description: 'Test' }
];
public get masterCheckbox() {
return this.tasks.reduce(
(acc, curr, idx, arr) => {
acc.checked = acc.checked && curr.done;
acc.done = curr.done ? acc.done + 1 : acc.done;
acc.indeterminate = acc.done === arr.length ? false : !!acc.done;
return acc;
},
{
checked: true,
done: 0,
indeterminate: false
}
);
}
public toggleAll() {
if (this.masterCheckbox.checked) {
for (const task of this.tasks) {
task.done = false;
}
} else {
for (const task of this.tasks) {
task.done = true;
}
}
}
Una vez hecho todo esto, nuestra aplicación debería verse así:
Angular Checkbox Styling
Para comenzar a diseñar la casilla de verificación, necesitamos importar el archivo index
, donde se encuentran todas las funciones del tema y los mixins de componentes:
@use "igniteui-angular/theming" as *;
// IMPORTANT: Prior to Ignite UI for Angular version 13 use:
// @import '~igniteui-angular/lib/core/styles/themes/index';
Luego, creamos un nuevo tema que extiende el checkbox-theme
y usamos algunos de sus parámetros para diseñar los elementos de la casilla de verificación:
// in styles.scss
$custom-checkbox-theme: checkbox-theme(
$border-radius: 10px,
$label-color: #011627,
$empty-color: #ECAA53,
$fill-color: #ECAA53,
$tick-color: #011627,
);
Including Themes
El último paso es incluir el tema del componente en nuestra aplicación.
Si $legacy-support
está configurado en true
, incluya el tema del componente así:
@include checkbox($custom-checkbox-theme);
Note
Si el componente utiliza una ViewEncapsulation Emulated
, es necesario penetrate
esta encapsulación usando::ng-deep
:host {
::ng-deep {
@include checkbox($custom-checkbox-theme);
}
}
Si $legacy-support
está configurado en false
(predeterminado), incluya las variables CSS del componente así:
@include css-vars($custom-checkbox-theme);
Note
Si el componente utiliza una ViewEncapsulation Emulated
, aún debe usar:host
porque necesita un selector global para anular las variables.
:host {
@include css-vars($custom-checkbox-theme);
}
Demo
API References
Theming Dependencies
Additional Resources
Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.