Casilla de verificación enlace de datos bidireccional en Angular

Oluwafisayo Oluwatayo 15 febrero 2024
Casilla de verificación enlace de datos bidireccional en Angular

Este artículo angular analizará diferentes métodos para llevar a cabo un enlace de datos bidireccional de casilla de verificación.

Usaremos el atributo ngModelOptions para el enlace de datos bidireccional. Esta solución funciona mejor cuando hay un atributo name.

También introduciremos el atributo ngModel que habilita el checkboxFlag para almacenar el estado real de la casilla de verificación cuando se cambia. Luego usaremos el atributo change para el enlace de datos, de modo que cuando se cambia el valor en el componente, la casilla de verificación también obtiene un nuevo valor.

Cuando se utiliza ngModel en formularios, la mayoría de las veces no funciona, por lo que es mejor utilizar el atributo ngModelOptions para garantizar que el valor de la casilla de verificación cambie a medida que se modifican los datos del componente.

<input
	type="checkbox"
	[(ngModel)]="itemChange"
	[ngModelOptions]="{standalone: true}"/>

enlace de datos de casilla de verificación angular

En algunos casos, el código no funcionará si la entrada no está dentro de un formulario, sino que forma parte del bucle ngFor. Además, el atributo name debe incluirse en la configuración del código para que el código funcione bien.

Mientras que el código de ejemplo anterior maneja el enlace de datos bidireccional en la parte del frontend, esta solución realiza cambios en el backend, haciendo un uso adecuado de ngModel.

<input
	[(ngModel)]="itemOne">
	type="checkbox"/>

Para que este código funcione perfectamente, importe { FormsModule } de @angular/forms a app.module.ts y agréguelo a el array de importaciones con este aspecto:

import { FormsModule } from'@angular/forms';

[...]

@NgModule({
imports: [
	[...]
	FormsModule
],
[...]
})

El atributo name tiene que ser único para que el estado marcado por defecto funcione como se esperaba, y debe estar dentro de la etiqueta input. Pero este código no funcionará si usa la casilla de verificación dentro de un ngFor mientras repite un array de objetos, así:

[{"checked":true},{"checked":false}]

Entonces también podemos usar el atributo change para hacer que los datos sean vinculantes en las casillas de verificación. Con este enfoque, creamos los códigos de una manera más detallada.

El componente html se verá así:

<input #saveCheckboxOne
	id="saveCheckboxOne"
	type="checkbox"
	[checked]="saveCheckbox"
	(change)="onSaveCheckboxChange(saveUserNameCheckBox.checked)" />

Entonces el component.js se escribirá como se muestra a continuación.

public saveCheckbox:boolean;

public onSaveCheckboxChange(value:boolean){
this.saveUsername = value;
}
Oluwafisayo Oluwatayo avatar Oluwafisayo Oluwatayo avatar

Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.

LinkedIn