La directiva Ignite UI for Angular Icon Button está pensada para convertir cualquier icono en un botón completamente funcional. Viene igxIconButton
en tres tipos: plano, delineado y contenido, que es el predeterminado.
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import {
IgxButtonModule,
IgxIconModule,
IgxRippleModule,
IgxIconButtonDirective
} from "igniteui-angular" ;
import { IconButtonOverviewComponent } from "./icon-button-overview/icon-button-overview.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
IconButtonOverviewComponent
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonModule,
IgxIconModule,
IgxRippleModule,
IgxIconButtonDirective
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー
import { Component } from '@angular/core' ;
@Component ({
selector : 'app-icon-button-overview' ,
styleUrls : ['./icon-button-overview.component.scss' ],
templateUrl : './icon-button-overview.component.html'
})
export class IconButtonOverviewComponent { }
ts コピー <div class ="wrapper" >
<div class ="button-sample" >
<button igxIconButton ="flat" igxRipple >
<igx-icon > home</igx-icon >
</button >
</div >
<div class ="button-sample" >
<button igxIconButton ="contained" igxRipple >
<igx-icon > home</igx-icon >
</button >
</div >
<div class ="button-sample" >
<button igxIconButton ="outlined" igxRipple >
<igx-icon > home</igx-icon >
</button >
</div >
</div >
html コピー .wrapper {
display : flex;
flex-flow : row wrap;
}
.button-sample {
display : flex;
flex-flow : row wrap;
justify-content : center;
align-items : center;
flex : 1 0 30% ;
margin : 16px 0 ;
}
scss コピー
Like this sample? Get access to our complete Ignite UI for Angular toolkit and start building your own apps in minutes. Download it for free.
Para comenzar con la directiva Ignite UI for Angular Icon Button, primero debe instalar Ignite UI for Angular. En una aplicación angular existente, escriba el siguiente comando:
ng add igniteui-angular
cmd
Para obtener una introducción completa a la Ignite UI for Angular, lea el tema de introducción .
El siguiente paso es importar el IgxIconButtonDirective
como una dependencia independiente:
...
import { IgxIconButtonDirective } from 'igniteui-angular' ;
@Component ({
selector : 'app-home' ,
template : `
<button igxIconButton="outlined">
<igx-icon>home</igx-icon>
</button>` ,
styleUrls : ['home.component.scss' ],
standalone : true ,
imports : [IgxIconButtonDirective]
})
export class HomeComponent {}
typescript
Ahora que tiene importada la directiva Ignite UI for Angular Icon Button, puede comenzar a usar la directiva en elementos igxIconButton
.
Utilice la directiva para añadir un simple botón de icono plano en la igxIconButton
plantilla de componente:
<button igxIconButton ="flat" >
<igx-icon > edit</igx-icon >
</button >
html
Todo lo que tienes que hacer para crear un botón de icono contenido es cambiar el valor de la igxIconButton
propiedad. Tenga en cuenta que si no elige un tipo, de forma predeterminada también se establecerá en contained
.
<button igxIconButton >
<igx-icon > favorite</igx-icon >
</button >
html
Analógicamente podemos pasar al tipo delineado:
<button igxIconButton ="outlined" >
<igx-icon > more_vert</igx-icon >
</button >
html
Examples
Si desea deshabilitar un botón de icono, puede usar la disabled
propiedad. En este ejemplo, también demostramos cómo usar iconos de diferentes familias con la igxIconButton
directiva:
<button igxIconButton ="flat" disabled >
<igx-icon family ="fa" name ="fa-home" > </igx-icon >
</button >
html
SVG Icons
Además de los iconos de material, la directiva también admite el igxIconButton
uso de imágenes SVG como iconos. Para hacerlo, primero debemos inyectar la IgxIconService
dependencia y luego usar el método para importar el addSvgIcon
archivo SVG en caché. Para obtener más información, puede leer la sección SVG en el tema del icono.
constructor (private _iconService: IgxIconService ) { }
public ngOnInit ( ) {
this ._iconService.addSvgIcon('rain' , 'assets/images/card/icons/rain.svg' , 'weather-icons' );
}
typescript
<button igxIconButton >
<igx-icon family ="weather-icons" name ="rain" > </igx-icon >
</button >
html
Tamaño
Los usuarios pueden elegir uno de los tres tamaños predefinidos igxIconButton
mediante la--ig-size
propiedad CSS personalizada. De forma predeterminada, el tamaño del componente se establece en medio.
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import {
IgxButtonModule,
IgxIconModule,
IgxRippleModule,
IgxIconButtonDirective
} from "igniteui-angular" ;
import { IconButtonSizeComponent } from "./icon-button-size/icon-button-size.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
IconButtonSizeComponent
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonModule,
IgxIconModule,
IgxRippleModule,
IgxIconButtonDirective
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー
import { Component } from '@angular/core' ;
@Component ({
selector : 'app-icon-button-size' ,
styleUrls : ['./icon-button-size.component.scss' ],
templateUrl : './icon-button-size.component.html'
})
export class IconButtonSizeComponent { }
ts コピー <div class ="wrapper" >
<div class ="button-sample" >
<span igxIconButton ="outlined" igxRipple class ="small" >
<igx-icon > person</igx-icon >
</span >
</div >
<div class ="button-sample" >
<div igxIconButton ="outlined" igxRipple class ="medium" >
<igx-icon > place</igx-icon >
</div >
</div >
<div class ="button-sample" >
<button igxIconButton ="outlined" igxRipple class ="large" >
<igx-icon > phone</igx-icon >
</button >
</div >
</div >
html コピー .wrapper {
display : flex;
flex-flow : row wrap;
}
.button-sample {
display : flex;
flex-flow : row wrap;
justify-content : center;
align-items : center;
flex : 1 0 30% ;
margin : 16px 0 ;
}
.large {
--ig-size: var(--ig-size-large);
}
.medium {
--ig-size: var(--ig-size-medium);
}
.small {
--ig-size: var(--ig-size-small);
}
scss コピー
Como puede ver en el ejemplo anterior, también podemos usar la igxIconButton
directiva para convertir elementos como span
y div
en botones de iconos de estilo Ignite UI for Angular.
Siguiendo el enfoque más simple, usamos variables CSS para personalizar la apariencia del botón del icono:
[igxIconButton="contained" ] {
--background : #011627 ;
--foreground: #fefefe ;
--hover-foreground: #011627 dc;
--hover-background : #ecaa53 ;
--focus-foreground: #011627 dc;
--focus-background : #ecaa53 ;
--focus-border-color : #011627 6c;
--active-foreground: #011627 dc;
--active-background : #ecaa53 ;
}
scss
Echa un vistazo a la icon-button-theme
sección para obtener una lista completa de los parámetros disponibles para diseñar cualquier tipo de botón de icono.
import { NgModule } from "@angular/core" ;
import { FormsModule } from "@angular/forms" ;
import { BrowserModule } from "@angular/platform-browser" ;
import { BrowserAnimationsModule } from "@angular/platform-browser/animations" ;
import { AppComponent } from "./app.component" ;
import {
IgxButtonModule,
IgxIconModule,
IgxRippleModule,
IgxIconButtonDirective
} from "igniteui-angular" ;
import { IconButtonStylingComponent } from "./icon-button-styling/icon-button-styling.component" ;
@NgModule ({
bootstrap : [AppComponent],
declarations : [
AppComponent,
IconButtonStylingComponent
],
imports : [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
IgxButtonModule,
IgxIconModule,
IgxRippleModule,
IgxIconButtonDirective
],
providers : [],
schemas : []
})
export class AppModule {}
ts コピー
import { Component } from '@angular/core' ;
@Component ({
selector : 'app-icon-button-styling' ,
styleUrls : ['./icon-button-styling.component.scss' ],
templateUrl : './icon-button-styling.component.html'
})
export class IconButtonStylingComponent { }
ts コピー <div class ="wrapper" >
<div class ="button-sample" >
<button igxIconButton ="flat" igxRipple >
<igx-icon > home</igx-icon >
</button >
</div >
<div class ="button-sample" >
<button igxIconButton ="contained" igxRipple >
<igx-icon > home</igx-icon >
</button >
</div >
<div class ="button-sample" >
<button igxIconButton ="outlined" igxRipple >
<igx-icon > home</igx-icon >
</button >
</div >
</div >
html コピー .wrapper {
display : flex;
flex-flow : row wrap;
}
.button-sample {
display : flex;
flex-flow : row wrap;
justify-content : center;
align-items : center;
flex : 1 0 30% ;
margin : 16px 0 ;
}
[igxIconButton="flat" ] {
--foreground: #011627 ;
--background : #FEFEFE ;
--hover-background : #ECAA53 ;
--focus-foreground: #011627 dc;
--focus-background : #ECAA53 ;
--active-foreground: #011627 dc;
--active-background : #ECAA53 ;
}
[igxIconButton="contained" ] {
--background : #011627 ;
--foreground: #FEFEFE ;
--hover-foreground: #011627 dc;
--hover-background : #ECAA53 ;
--focus-foreground: #011627 dc;
--focus-background : #ECAA53 ;
--focus-border-color : #011627 6c;
--active-foreground: #011627 dc;
--active-background : #ECAA53 ;
}
[igxIconButton="outlined" ] {
--foreground: #011627 ;
--background : #FEFEFE ;
--border-color : #011627 ;
--hover-foreground: #011627 dc;
--hover-background : #ECAA53 ;
--focus-foreground: #011627 dc;
--focus-background : #ECAA53 ;
--focus-border-color : #011627 6c;
--active-foreground: #011627 dc;
--active-background : #ECAA53 ;
}
scss コピー
API References
Additional Resources
Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.