Descripción general del componente de progreso circular Angular

    El componente Ignite UI for Angular Circular Progress Indicator proporciona un indicador visual del proceso de una aplicación a medida que cambia. El indicador circular actualiza su apariencia a medida que cambia su estado.

    Angular Circular Progress Example

    Getting Started with Ignite UI for Angular Circular Progress

    Para comenzar con el componente Ignite UI for Angular Circular Progress, 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 IgxProgressBarModule en el archivo app.module.ts:

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

    Alternativamente, a partir de 16.0.0, puede importar IgxCircularProgressBarComponent como una dependencia independiente o usar el token IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES para importar el componente y todos sus componentes y directivas de soporte.

    // home.component.ts
    
    import { IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES } from 'igniteui-angular';
    // import { IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
    
    @Component({
        selector: 'app-home',
        template: `
        <igx-circular-bar
            [value]="100"
            [animate]="true"
            class="custom-size"
        ></igx-circular-bar>
        `,
        styleUrls: ['home.component.scss'],
        standalone: true,
        imports: [IGX_CIRCULAR_PROGRESS_BAR_DIRECTIVES]
        /* or imports: [IgxCircularProgressBarComponent] */
    })
    export class HomeComponent {}
    

    Ahora que ha importado la Ignite UI for Angular, puede comenzar a usar el componente igx-circular-bar.

    Using the Angular Circular Progress

    Para comprender mejor cómo funciona todo, creemos un ejemplo simple, como el de la demostración:

    <igx-circular-bar
        [value]="100"
        [animate]="true"
        class="custom-size"
    ></igx-circular-bar>
    

    Después de eso, deberíamos tener la muestra de demostración en su navegador.

    Note

    La barra circular igx emite el evento onProgressChanged que genera un objeto como este {currentValue: 65, previousValue: 64} en cada paso.

    Note

    El progreso predeterminado aumenta en un 1% del valor max por ciclo de actualización; esto sucede si el valor del step no está definido. Para cambiar la velocidad de actualización, se debe definir el valor step

    Indeterminate Progress

    Si desea realizar un seguimiento de un proceso que no está determinado con precisión, puede establecer la propiedad de entrada indeterminate en true.

    <igx-circular-bar
        [animate]="false"
        [indeterminate]="true"
        [textVisibility]="false"
    ></igx-circular-bar>
    
    Note

    Puede ocultar el texto de la barra de progreso circular configurando la propiedad textVisibility en false.

    El resultado final debería ser:

    Dynamic Progress

    Puede cambiar dinámicamente el valor del progreso utilizando controles externos como botones. Para lograr esto, podemos vincular el valor a una propiedad de clase:

    <div class="sample-content">
        <igx-circular-bar
            [value]="currentValue"
            [max]="100"
            [animate]="true"
            class="custom-size">
        </igx-circular-bar>
        <div class="button-container">
            <button igxIconButton="flat" (click)="decrementProgress()">
                <igx-icon fontSet="material">remove</igx-icon>
            </button>
            <button igxIconButton="flat" (click)="incrementProgress()">
                <igx-icon fontSet="material">add</igx-icon>
            </button>
        </div>
    </div>
    

    Agregue los métodos que incrementan y disminuyen el valor:

    @Component({...})
    export class HomeComponent {
        public currentValue: number;
    
        public ngOnInit() {
            this.currentValue = 0;
        }
    
        public incrementProgress() {
            this.currentValue += 10;
            if (this.currentValue > 100) {
                this.currentValue = 100;
            }
        }
    
        public decrementProgress() {
            this.currentValue -= 10;
            if (this.currentValue < 0) {
                this.currentValue = 0;
            }
        }
    }
    

    Añade algunos estilos:

    .custom-size {
      width: 100px;
      height: 100px;
    }
    
    .sample-content {
      width: 300px;
      display: flex;
      align-items: center;
      margin-top: 30px;
    }
    

    Gradient Progress

    Una forma de personalizar la barra de progreso es utilizar un degradado de color en lugar de un color sólido. Esto se puede hacer de dos maneras: utilizando la directiva IgxProgressBarGradientDirective o implementando un tema personalizado, aunque los temas personalizados admiten hasta dos paradas de color.

    Si desea crear un degradado con solo dos paradas de color, puede hacerlo utilizando un tema personalizado. Cree una lista de colores y pásela al parámetro de tema $progress-circle-color:

    $colors: #695cf9, #ef017c;
    
    $custom-theme: progress-circular-theme(
        $progress-circle-color: $colors
        
    );
    

    Puede obtener más información sobre cómo diseñar la barra de progreso circular en la Styling Section

    Para proporcionar un degradado que tenga más de 2 paradas de color, tenemos que usar la directiva en una ng-template en nuestra igx-circular-bar así:

    <div class="sample-content">
      <igx-circular-bar
        [value]="currentValue"
        [max]="100"
        [animate]="true"
        class="custom-size">
          <ng-template igxProgressBarGradient let-id>
              <svg:linearGradient [id]="id" gradientTransform="rotate(90)">
                  <stop offset="0%"   stop-color="#ff9a40"/>
                  <stop offset="50%" stop-color="#1eccd4"/>
                  <stop offset="100%" stop-color="#ff0079"/>
              </svg:linearGradient>
          </ng-template>
      </igx-circular-bar>
    
      <div class="button-container">
          <button igxIconButton="flat" (click)="removeProgress()">
              <igx-icon fontSet="material">remove</igx-icon>
          </button>
          <button igxIconButton="flat" (click)="addProgress()">
              <igx-icon fontSet="material">add</igx-icon>
          </button>
      </div>
    </div>
    

    Después de reproducir los pasos anteriores, debería obtener este resultado:

    Estilismo

    Para comenzar a diseñar la barra de progreso circular, 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 progress-circular-theme y acepta los parámetros $base-circle-color y $progress-circle-color.

    $custom-theme: progress-circular-theme(
        $base-circle-color: lightgray,
        $progress-circle-color: rgb(32, 192, 17)
    );
    

    Including Themes

    El último paso es incluir el tema del componente en nuestra aplicación.

    Si $legacy-support está configurado en true, incluya el tema del componente así:

     @include progress-circular($custom-theme);
    
    Note

    Si el componente utiliza una ViewEncapsulation Emulated, es necesario penetrate esta encapsulación usando::ng-deep

    :host {
         ::ng-deep {
            @include progress-circular($custom-theme);
        }
    }
    

    Si $legacy-support está configurado en false (predeterminado), incluya las variables CSS del componente así:

    @include css-vars($custom-theme);
    
    Note

    Si el componente utiliza una ViewEncapsulation Emulated, aún debe usar:host porque necesita un selector global para anular las variables.

    :host {
        @include css-vars($custom-theme);
    }
    

    Demo

    API