Descripción general de la directiva de alternancia Angular

    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 a la Ignite UI for Angular, lea el tema de introducción.

    El siguiente paso es importar IgxToggleModule en su archivo app.module.ts.

    // app.module.ts
    
    ...
    import { IgxToggleModule } from 'igniteui-angular';
    // import { IgxToggleModule } from '@infragistics/igniteui-angular'; for licensed package
    
    @NgModule({
        ...
        imports: [..., IgxToggleModule]
        ...
    })
    export class AppModule {}
    

    Alternativamente, a partir de 16.0.0 puede importar IgxToggleDirective como una dependencia independiente.

    // home.component.ts
    
    import { IgxToggleDirective, IgxButtonDirective } from 'igniteui-angular';
    // 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 tiene importada la directiva o el módulo Ignite UI for Angular Toggle, puede comenzar a usar la directiva igxToggle.

    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'
    // 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 al 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.

    La directiva igxToggle utiliza el proveedor IgxOverlayService. Los métodos open, close y toggle aceptan configuraciones de superposición opcionales que controlan cómo se muestra el contenido. Si se omite, se utilizan las configuraciones de superposición predeterminadas como se ve en el ejemplo anterior.

    Note

    De forma predeterminada, la propiedad closeOnOutsideClick está establecida en true. Para deshabilitar esta funcionalidad, la propiedad debe establecerse en false. Además, la propiedad closeOnEscape tiene el valor predeterminado false, por lo que para poder utilizarla debemos establecerla en true.

    // 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 el uso de los métodos open y close, podemos usar una directiva, que tiene un controlador onClick, y cambia automáticamente el estado del conmutador al que nos referimos.

    Si queremos aprovechar esta funcionalidad, tendremos que usar IgxToggleActionDirective del IgxToggleModule y asignarle IgxToggleDirective.

    Note

    IgxToggleActionDirective debe declararse en el elemento que planeamos usar como disparador (alternar).

    <!--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

    De forma predeterminada, IgxToggleActionDirective excluye su elemento host de la propiedad closeOnOutsideClick. Por lo tanto, hacer clic en el elemento anfitrión no activará ningún evento. Además, esta directiva establecerá su elemento host como target de configuración de superposición.

    Automatic Toggle Service Provider

    Existe una manera conveniente de mantener el estado de la directiva igxToggle y ordenarla a través del proveedor igxNavigationService. Solo necesitamos establecer un identificador para nuestro elemento igxToggle, que se utilizará para registrar el conmutador con el servicio. Si queremos controlar su estado automáticamente, debemos pasar este identificador a igxToggleActionDirective.

    <!--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 de alternancia a lo largo del eje correspondiente en una cantidad proporcionada. El setOffset método también admite un parámetro opcional offsetMode que determina si se deben agregar a los valores de desplazamiento actuales o establecerlos 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.