Descripción general del botón Angular

    La directiva Angular Button se utiliza para crear y agregar botones procesables a una página web/aplicación. Existen diferentes tipos de botones Angular que son fáciles de personalizar e incluyen varias funciones integradas. De forma predeterminada, Angular Material utiliza elementos nativos <button> y <a> para ofrecer una experiencia accesible.

    La directiva Ignite UI for Angular Button está pensada para convertir cualquier botón, span, div o elemento de anclaje en un botón completamente funcional. Puede utilizar los siguientes tipos de botones angulares: botón plano, botón contenido, botón delineado y botón de acción flotante. Con colores personalizables, opciones para crear temas y cambiar el estilo de botón angular y permitir a los usuarios elegir el tamaño del botón y más.

    Angular Button Example

    Hemos creado el siguiente ejemplo de botón Angular para mostrarle cómo pueden aparecer y verse los diferentes tipos de botones cuando se les aplica un estilo con un borde o cuando se aplica un fondo transparente.

    Getting Started with Ignite UI for Angular Button

    Para comenzar con la directiva Ignite UI for Angular Button, 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 IgxButtonModule en su archivo app.module.ts.

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

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

    // home.component.ts
    
    ...
    import { IgxButtonDirective } from 'igniteui-angular';
    // import { IgxButtonDirective } from '@infragistics/igniteui-angular'; for licensed package
    
    @Component({
        selector: 'app-home',
        template: '<button igxButton="flat">Flat</button>',
        styleUrls: ['home.component.scss'],
        standalone: true,
        imports: [IgxButtonDirective]
    })
    export class HomeComponent {}
    

    Ahora que tiene importada la directiva o el módulo Ignite UI for Angular Button, puede comenzar a usar la directiva igxButton en los elementos.

    Angular Button Types

    Flat Button

    Utilice la directiva igxButton para agregar un botón plano simple en su plantilla de componente. Tenga en cuenta que si no elige un tipo, de forma predeterminada se establecerá en flat.

    <button igxButton="flat">Flat</button>
    

    Contained Button

    Todo lo que tienes que hacer para crear un botón contenido es cambiar el valor de la igxButton propiedad:

    <button igxButton="contained">Contained</button>
    

    Outlined Button

    Analógicamente podemos pasar al tipo delineado:

    <button igxButton="outlined">Outlined</button>
    

    Botón de icono

    A partir de la versión 17.1.0, IgniteUI para Angular expone una nueva igxIconButton directiva destinada a convertir iconos en botones completamente funcionales. Puedes leer más sobre el botón de iconos aquí.

    <button igxIconButton="flat">
      <igx-icon fontSet="material">favorite</igx-icon>
    </button>
    

    Floating Action Button

    Podemos crear un botón de acción flotante y usar un ícono para mostrar:

    <button igxButton="fab">
      <igx-icon fontSet="material">edit</igx-icon>
    </button>
    

    Para crear un FAB extendido, puede agregar cualquier elemento antes del igx-icon:

    <button class="btn" igxButton="fab">
        <span>like</span>
        <igx-icon fontSet="material">favorite</igx-icon>
    </button>
    
    Note

    Para que el texto FAB extendido tenga el estilo adecuado, utilice etiquetas <span> o <div>.

    Examples

    Angular Disable Button

    La propiedad disabled se puede utilizar para hacer que no se pueda hacer clic en un botón:

    <button igxButton="contained" [disabled]="'true'">Disabled</button>
    

    Onda

    La directiva igxRipple agrega un efecto dominó a sus botones u otros elementos especificados. Puede cambiar fácilmente el color, la posición y la duración de la onda predeterminada, utilizando sus propiedades:

    <button igxButton="contained" igxRipple="white" [igxRippleCentered]="true" [igxRippleDuration]="2000">
        Ripple
    </button>
    

    Span

    También podemos usar la directiva igxButton para convertir elementos como span y div en Ignite UI for Angular. Los colores predeterminados se pueden personalizar mediante las propiedades igxButtonColor e igxButtonBackground:

    <span igxButton="contained" igxButtonColor="white" igxButtonBackground="#72da67" igxRipple="white">
        Span
    </span>
    

    Tamaño (densidad de visualización)

    Podemos permitir que el usuario elija el tamaño del igxButton utilizando la propiedad CSS personalizada--ig-size. Para hacer esto, primero tenemos que importar IgxButtonGroupModule y luego usar el componente igxButtonGroup para mostrar los valores de tamaño. De esta manera, cada vez que se seleccione uno, actualizaremos la propiedad CSS--ig-size.

    // app.module.ts
    ...
    import { IgxButtonGroupModule } from 'igniteui-angular';
    // import { IgxButtonGroupModule } from '@infragistics/igniteui-angular'; for licensed package
    @NgModule({
        imports: [
            ...
            IgxButtonGroupModule
            ...
        ]
    })
    
    <!--buttons-density.component.html-->
    <igx-buttongroup [values]="sizes" (selected)="selectSize($event)"></igx-buttongroup>
    ...
    <button igxButton="flat">Flat</button>
    
    // buttons-density.component.ts
    public size = "large";
    public sizes;
    public ngOnInit() {
        this.sizes = [
            { label: 'large', selected: this.size === 'large', togglable: true },
            { label: 'medium', selected: this.size === 'medium', togglable: true },
            { label: 'small', selected: this.size === 'small', togglable: true }
        ];
    }
    
    public selectSize(event: any) {
        this.size = this.sizes[event.index].label;
    }
    
    
    @HostBinding('style.--ig-size')
    protected get sizeStyle() {
        return `var(--ig-size-${this.size})`;
    }
    

    Si todo ha ido bien deberías ver algo como lo siguiente en el navegador:

    Angular Button Styling

    Para comenzar a diseñar el botó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';
    

    Siguiendo el enfoque más simple, creamos un nuevo tema que extiende el button-theme y acepta los parámetros $foreground y $background con sus respectivos parámetros de desplazamiento y enfoque.

    Dado el siguiente marcado:

    <div class="my-contained-btn">
        <button igxButton="contained">Contained button</button>
    </div>
    

    Necesitamos crear un tema:

    $custom-button-theme: button-theme(
        $foreground: #fdfdfd,
        $hover-foreground: #fdfdfd,
        $focus-foreground: #fdfdfd,
        $background: #345779,
        $hover-background: #2e4d6b,
        $focus-background: #2e4d6b,
        $disabled-foreground: #2e4d6b
    );
    

    Eche un vistazo a la sección button-theme para obtener una lista completa de los parámetros disponibles para diseñar cualquier tipo de botón.

    Using CSS variables

    El último paso es pasar el tema del botón personalizado en nuestra aplicación:

    .my-contained-btn {
        @include css-vars($custom-button-theme);
    }
    

    Using Theme Overrides

    Para diseñar componentes para navegadores más antiguos, como Internet Explorer 11, tenemos que utilizar un enfoque diferente, ya que no admite variables CSS. Si el componente utiliza Emulated ViewEncapsulation, es necesario penetrate esta encapsulación usando::ng-deep. Para evitar que el tema personalizado se filtre a otros componentes, asegúrese de incluir el selector:host antes de::ng-deep:

    :host {
         ::ng-deep {
            .my-contained-btn {
                @include button($custom-button-theme);
            }
        }
    }
    

    Demo

    Custom sizing

    Puede cambiar la altura del botón mediante la--size variable, dirigiéndose directamente a button:

    button {
      --size: 50px;
    }
    

    O bien, puede utilizar la variable universal--igx-button-size para dirigirse a todas las instancias:

    <div class="my-app">
      <button igxButton="raised"></button>
    </div>
    
    .my-app {
      --igx-button-size: 50px;
    }
    

    También puede utilizar uno de los tamaños predefinidos, asignándolo a la--ig-size variable. Los valores disponibles para--ig-size son--ig-size-small,,--ig-size-medium y--ig-size-large:

    button {
        --ig-size: var(--ig-size-large);
    }
    

    Obtén más información al respecto en el artículo Talla.

    API References

    Additional Resources

    Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.