Angular Descripción general de la directiva de alternancia
La directiva Ignite UI for Angular Toggle permite a los usuarios hacer que un contenedor en el DOM se pueda alternar a través de la interacción del usuario.
Angular Toggle Example
Getting Started with Ignite UI for Angular Toggle
Para comenzar con la directiva Ignite UI for Angular Toggle, 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 al Ignite UI for Angular, lea el tema de introducción.
El siguiente paso es importarlosIgxToggleModule en tu archivo app.module.ts.
// app.module.ts
...
import { IgxToggleModule } from 'igniteui-angular/directives';
// import { IgxToggleModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxToggleModule]
...
})
export class AppModule {}
Alternativamente,16.0.0 puedes importarlosIgxToggleDirective como una dependencia independiente.
// home.component.ts
import { IgxToggleDirective, IgxButtonDirective } from 'igniteui-angular/directives';
// import { IgxToggleDirective, IgxButtonDirective } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: `
<button class="toggle-button" igxButton="contained" (click)="toggleContent()">Toggle</button>
<div class="toggle-content" igxToggle>
<section class="toggle-section">
<img src="assets/images/toggle/nature.jpg" alt="Nature" />
</section>
</div>
`,
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IgxToggleDirective, IgxButtonDirective]
})
export class HomeComponent {}
Ahora que tienes importado el módulo o directiva Ignite UI for Angular Toggle, puedes empezar a usar laigxToggle directiva.
Using the Angular Toggle Directive
Display Toggle
Para mostrar y ocultar el contenido de alternancia, utilice sus métodos de apertura y cierre:
import { IgxToggleDirective } from 'igniteui-angular/directives'
// import { IgxToggleDirective } from '@infragistics/igniteui-angular'; for licensed package
...
export class Class {
@ViewChild(IgxToggleDirective) toggle: IgxToggleDirective;
toggleContent() {
if (this.toggle.collapsed) {
this.toggle.open();
} else {
this.toggle.close();
}
}
}
Luego, en la plantilla de nuestro componente, podemos aplicar la directiva sobre el elemento que queremos que sea alternable:
<!--template.component.html-->
<button class="toggle-button" igxButton="contained" (click)="toggleContent()">Toggle</button>
<div class="toggle-content" igxToggle>
<section class="toggle-section">
<img src="assets/images/toggle/nature.jpg"/>
</section>
</div>
Examples
Change Position
En el siguiente ejemplo, usaremos una estrategia de posicionamiento diferente para que el contenido se muestre debajo del botón.
LaigxToggle directiva utiliza elIgxOverlayService proveedor. Losopenclose métodos ytoggle aceptan configuraciones opcionales de superposición que controlan cómo se muestra el contenido. Si se omiten, se usan los ajustes predeterminados de superposición como se ha visto en la muestra anterior.
Note
Por defecto, lacloseOnOutsideClick propiedad está configurada comotrue. Para desactivar esta funcionalidad, la propiedad debe configurarse enfalse. Además, lacloseOnEscape propiedad está predeterminada enfalse, así que para poder usarla, tenemos que configurarla comotrue.
// template.component.ts
...
@ViewChild(IgxToggleDirective) public igxToggle: IgxToggleDirective;
@ViewChild('button') public igxButton: ElementRef;
public _positionSettings = {
horizontalStartPoint: HorizontalAlignment.Left,
verticalStartPoint: VerticalAlignment.Bottom
};
public _overlaySettings = {
target: this.igxButton.nativeElement,
closeOnOutsideClick: false,
closeOnEscape: true,
positionStrategy: new ConnectedPositioningStrategy(this._positionSettings)
};
public toggle() {
this.igxToggle.toggle(this._overlaySettings);
}
Así es como debería verse nuestra palanca ahora:
Automatic Toggle Actions
Para evitar usar losopen métodos yclose, podemos usar una directiva, que tiene unonClick manejador, y cambia automáticamente el estado del toggle al que nos referimos.
Si queremos aprovechar esta funcionalidad, tendremos que usar elIgxToggleActionDirective from yIgxToggleModule asignarle elIgxToggleDirective.
Note
DebenIgxToggleActionDirective declararse sobre el elemento que planeamos usar como un disparador (toggle).
<!--template.component.html-->
<button class="toggle-button" igxButton="contained" [igxToggleAction]="toggleRef">Toggle</button>
<div class="toggle-content" igxToggle #toggleRef="toggle">
<section class="toggle-section">
<h6>Automatic toggle actions</h6>
</section>
</div>
Después de estos cambios, la palanca debería funcionar exactamente de la misma manera.
Note
Por defectoIgxToggleActionDirective, excluye a su elemento anfitrión de lacloseOnOutsideClick propiedad. Por lo tanto, hacer clic en el elemento anfitrión no se activará ningún evento. Además, esta directiva establecerá su elemento anfitrión como configuracióntarget de superposición.
Automatic Toggle Service Provider
Hay una forma cómoda de mantener el estado de laigxToggle directiva y ordenarla a través deligxNavigationService proveedor. Solo necesitamos establecer un identificador para nuestroigxToggle elemento, que se usará para registrar el toggle con el servicio. Si queremos controlar su estado automáticamente, tenemos que pasar este identificador a laigxToggleActionDirective.
<!--template.component.html-->
<button igxToggleAction="toggleId" class="toggle-button" igxButton="contained">Toggle</button>
<div igxToggle id="toggleId" class="toggle-content">
<section class="toggle-section">
<h6>Toggled by the service provider</h6>
</section>
</div>
Si todo ha ido bien, quedará así:
Offsetting the Toggle Container
Podemos manipular la posición del contenedor toggle a lo largo del eje correspondiente en una cantidad proporcionada. ElsetOffset método también soporta un parámetro opcionaloffsetMode que determina si añadir a los valores actuales del desplazamiento o fijarlos en un valor específico.
// deltaX and deltaY determine by how much the container will be offset compared to its' previous position
// Using OffsetMode.Add to add the values (default behavior)
public offsetToggleAdd() {
const deltaX = 30;
const deltaY = 30;
this.toggle.setOffset(deltaX, deltaY, OffsetMode.Add);
}
// deltaX and deltaY determine the exact position to set the container to, relative to its target element.
// Using OffsetMode.Set to set the offset to specific values
public offsetToggleSet() {
const deltaX = 30;
const deltaY = 30;
this.toggle.setOffset(deltaX, deltaY, OffsetMode.Set);
}
API References
Componentes adicionales y/o directivas con API relativas que se utilizaron:
Theming Dependencies
Additional Resources
Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.