Guía de actualización
En el Ignite UI for Angular el control de versiones, el primer número siempre coincide con la versión principal de Angular admite el código y el segundo está dedicado a las versiones principales. Es posible que se introduzcan cambios importantes entre las versiones principales. Puede encontrar una lista completa de cambios para cada versión de Ignite UI for Angular en el REGISTRO DE CAMBIOS del producto
El paquete Ignite UI for Angular también soporta la migración automática de versiones medianteng update esquemas. Estos intentarán migrar todos los posibles cambios de interrupción (selectores, clases y propiedades @Input/Salida renombrados), aunque puede que aún haya cambios que no puedan migrarse. Estos suelen estar relacionados con la lógica de aplicación de typescript y se describirán adicionalmente a continuación.
Primero ejecuta elng update comando que analizará tu aplicación y las actualizaciones disponibles para sus paquetes.
ng update
Para actualizar el paquete con licencia Ignite UI for Angular, ejecute el siguiente comando:
ng update @infragistics/igniteui-angular
Para actualizar el paquete gratuito de Ignite UI for Angular, ejecute el siguiente comando:
ng update igniteui-angular
Cuando actualizas@infragistics/igniteui-angular oigniteui-angular, se recomienda actualizar@angular/core@angular/cli yigniteui-cli los paquetes a sus versiones correspondientes. Para actualizar el paquete Ignite UI CLI, ejecuta el siguiente comando:
ng update igniteui-cli
Para actualizar el paquete Angular Core, ejecute el siguiente comando:
ng update @angular/core
Para actualizar el paquete Angular CLI, utilice el siguiente comando:
ng update @angular/cli
Note
Si elng update comando falla debido a las descoincidencias de dependencias de paquetes, entonces revierte la actualización, elimina lanode_modules carpeta y vuelve a ejecutar la actualización con--force la bandera.
Additional manual changes
Lamentablemente, no todos los cambios se pueden actualizar automáticamente. Los cambios a continuación se dividen en secciones a medida que ocurren en las versiones, por lo que si se requiere alguna actualización, debe comenzar desde su versión actual y aplicar más actualizaciones de abajo hacia arriba.
Por ejemplo: si está actualizando de la versión 6.2.4 a 7.1.0, debe comenzar desde la sección "Desde 6.x...", aplicar esos cambios y avanzar hacia arriba:
From 20.x to 21.0.x
Multiple Entry Points Support
La versión 21.0.0 introduce múltiples puntos de entrada para mejorar el balanceo del árbol y la división de código. El punto de entrada principal (igniteui-angular) sigue siendo totalmente compatible hacia atrás, pero se recomienda migrar a puntos de entrada granulares para obtener tamaños óptimos de fibrado.
Cambios clave:
- Componentes organizados en puntos de entrada dedicados (por ejemplo,
igniteui-angular/grids/gridigniteui-angular/button - Algunos componentes reubicados (directivas de entrada, autocompletado, grupo de radio)
- Renombrar el tipo:
Direction→CarouselAnimationDirection
Migration:
Al actualizar, se te pedirá que migres las importaciones automáticamente:
ng update igniteui-angular
Elige "Sí" cuando te lo pidan, o migra más tarde con:
ng update igniteui-angular --migrate-only --from=20.1.0 --to=21.0.0
Para detalles completos sobre puntos de entrada, opciones de migración, cambios de interrupciones y ejemplos de uso, consulte la guía de División de Código y Puntos de Entrada Múltiples.
Dependency Injection Refactor
Toda inyección interna de dependencias ahora utiliza lainject() API. Esto generalmente no afecta al código de la aplicación, pero si amplías Ignite UI componentes o servicios, puede que necesites actualizar tus constructores para usarinject() en lugar de parámetros constructores.
From 17.2.x to 18.0.x
Breaking changes
- En la versión 18.0.x la propiedad obsoleta
displayDensityse elimina en favor de la propiedad--ig-sizeCSS personalizada. Para más referencias, consulta la guía de actualización de 16.0.x a 16.1.x.
General
IgxPivotGrid
Breaking changes
- La propiedad
showPivotConfigurationUIde la cuadrícula pivotante se modifica y se extiende a.pivotUI
// version 17.2.x
<igx-pivot-grid [data]="data" [pivotConfiguration]="pivotConfig" [showPivotConfigurationUI]="false">
</igx-pivot-grid>
// version 18.0.x
<igx-pivot-grid [data]="data" [pivotConfiguration]="pivotConfig" [pivotUI]="{ showConfiguration: false }">
</igx-pivot-grid>
From 17.0.x to 17.1.x
General
IgxGrid,IgxTreeGrid,IgxHierarchicalGrid- Cambios importantes
rowAddyrowDeletelos eventos ahora emiten argumento de evento de tipoIRowDataCancelableEventArgsen lugar deIGridEditEventArgs. Las dos interfaces siguen siendo compatibles, aunque redundantes para estos eventos, las propiedadescellIDnewValueoldValueisAddRowestán obsoletas yIRowDataCancelableEventArgsserán eliminadas en una versión futura. Cambiar a las interfaces nuevas correctas debería revelar cualquier uso obsoleto que pueda eliminarse de forma segura.
- Obsolescencias
rowIDLa propiedad ha sido descontinuada en las siguientes interfaces:IGridEditDoneEventArgs,IPathSegment,IRowToggleEventArgs,IPinRowEventArgs,,yIgxAddRowParentserá eliminada en una versión futura. ÚsalorowKeyen su lugar.primaryKeyha sido obsoleta en las siguientes interfaces:IRowDataEventArgs,IGridEditDoneEventArgs. ÚsalorowKeyen su lugar.dataha sido descontinuada en las siguientes interfaces:IRowDataEventArgs. ÚsalorowDataen su lugar.
- Cambios importantes
Breaking changes
- En la versión 17.1.x el
icontipo de directivaigxButtonse ha cambiado por laigxIconButtondirectiva de tipoflat. Las migraciones automáticas están disponibles y se aplicarán enng updateellas. Sin embargo, algunas de lasigxButtonpropiedades de entrada que antes podían usarse con losiconbotones de tipo no pueden aplicarse a los recién creadosigxIconButton. Si has usado lasigxButtonColorpropiedades oigxButtonBackgroundcon un botón de tipoicon, deberías actualizarlo de la siguiente manera:
// version 17.0.x
<button igxButton="icon" [igxButtonBackground]="'red'">
<igx-icon fontSet="material">search</igx-icon>
</button>
// version 17.1.x
<button igxIconButton="flat" [style.background]="'red'">
<igx-icon fontSet="material">search</igx-icon>
</button>
NOTA: Los usuarios deben añadir manualmente lasIgxIconButtonDirective fichas en sus importaciones:
import { IgxIconButtonDirective } from 'igniteui-angular';
@Component({
...
imports: [IgxIconButtonDirective]
})
From 16.1.x to 17.0.x
General
- En la versión 17.0 Angular retirado los
@nguniversal/*paquetes. Si el proyecto utiliza estos paquetes, una llamada estándarng updatecausará un error en lasigniteui-angularmigraciones debido a modificacionespackage-lock.jsonincorrectas; más detalles se pueden encontrar en el número #13668. Para actualizar a17.0.xuno de los siguientes pasos adicionales, es necesario seguir:- Elimina el
package-lock.jsonarchivo antes de ejecutarlong update - Correr
npm dedupe --legacy-peer-depsantes que correrng update igniteui-angular
- Elimina el
Cambio radical
- El tipo
IgxCombode argumentos de evento deselectionChangingInIComboSelectionChangingEventArgspresenta estos cambios:- propiedades
newSelectionyoldSelectionhan sido renombradas respectivamente comonewValueyoldValuepara reflejar mejor su función. Al igual que losvalueCombo, estos emitirán los valores de propiedad especificados o los datos completos dependiendo de sivalueKeyestá configurado o no. Hay migraciones automáticas disponibles que se aplicarán ang updateellas. - dos propiedades
newSelectionnuevas yoldSelectionquedan expuestas en lugar de las antiguas, que ya no se ven afectadas yvalueKeyemiten objetos de forma constante desde lasdataCombo. - propiedades
addedyremovedahora siempre contienen elementos de datos, independientemente de sivalueKeyestán establecidos. Esto los alinea con las propiedades actualizadasnewSelectionyoldSelectionde And Properties.
- propiedades
Si tu código enselectionChanging el gestor de eventos dependía de leervalueKeys del argumento de evento, actualízalo de la siguiente manera:
// version 16.1.x
public handleSelectionChanging(e: IComboSelectionChangingEventArgs): void {
this.addedItems = e.added;
this.removedItems = e.removed;
}
// version 17.0.x
public handleSelectionChanging(e: IComboSelectionChangingEventArgs): void {
this.addedItems = e.added.map(i => {
return i[e.owner?.valueKey]
});
this.removedItems = e.removed.map(i => {
return i[e.owner?.valueKey]
});
}
getCurrentResourceStringsha sido eliminado. Utiliza en su lugar las importaciones de cadenas de componentes específicas.Por ejemplo, las cuerdas EN provienen de
igniteui-angular:import { GridResourceStringsEN } from 'igniteui-angular';Por ejemplo, las cadenas de DE u otros idiomas provienen de
igniteui-angular-i18n:import { GridResourceStringsDE } from 'igniteui-angular-i18n';Se pueden encontrar ejemplos de uso en el documento de localización (i18n) actualizado.
From 16.0.x to 16.1.x
General
Non-breaking changes
- Nos estamos alejando del
DisplayDensityTokentoken de inyección como una forma de establecer el tamaño de los componentes en favor de una forma más sencilla y robusta: usando propiedades personalizadas CSS. Por esa razón, elDisplayDensityTokentoken de inyección está ahora obsoleto. Esto se propaga en todos los componentes que exponen la propiedad de entradadisplayDensity. Las propiedades del token y de entrada se eliminarán en la versión 17.0.0. Os instamos a hacer lo siguiente:
Elimina todas las declaraciones donde se proporcione elDisplayDensityToken siguiente:
// *.component.ts
// remove the provider declaration for `DisplayDensityToken`
providers: [{ provide: DisplayDensityToken, useValue: { displayDensity: DisplayDensity.compact } }],
Elimina todas las asignaciones o asignaciones programáticas a ladisplayDensity propiedad de entrada:
<!-- Remove `[displayDensity]="'compact'"` -->
<igx-grid [displayDensity]="'compact'">...</igx-grid>
En su lugar, utiliza la propiedad--ig-size CSS personalizada para lograr el mismo resultado que condisplayDensity:
/*
Add --ig-size to a component or global file.
Available values are:
- compact: --ig-size-small
- cosy: --ig-size-medium
- comfortable: --ig-size-large
*/
igx-grid {
--ig-size: var(--ig-size-small);
}
From 15.1.x to 16.0.x
La mejora a Angular 16 viene acompañada de cambios en la
NgModulesforma de operar bajo el capó. Antes, añadir un módulo que dependía internamente de otro hacía que las declaraciones de ambos estuvieran disponibles en tu app. Este comportamiento no fue intencionado y Angular 16 lo cambia. Si tu app dependía de este comportamiento, por ejemplo, solo importabas un módulo que contenía muchas dependencias internas yIgxGridModuleusabas componentes que vienen con esas, tendrás que añadir manualmente los módulos de cada componente que usa tu app por separado.Cambios importantes
En la versión 16.0.x, se eliminan todas las propiedades de la cuadrícula relacionadas con el paginaje. El comportamiento de paginación ahora está configurado y controlado completamente a través de el
IgxPaginatorComponent. Para habilitar la paginación en la cuadrícula, inicializa enIgxPaginatorComponentla cuadrícula y establece las propiedades de entrada relacionadas, y anexa a los gestores de eventos al propio paginador:
<igx-grid ...>
<igx-paginator #paginator [totalRecords]="totalRecords" [perPage]="25" (pageChange)="pageChange($event) (perPageChange)="perPageChange($event)">
</igx-paginator>
<igx-grid>
@ViewChild('grid', { static: true }) private grid: IgxGridComponent;
@ViewChild('paginator', { static: true }) private paginator: IgxPaginatorComponent;
// prior version 16.0.x
public onButtonClick(event) {
this.grid.nextPage();
this.grid.previousPage();
this.grid.paginate(0);
}
// from version 16.0.x
public onButtonClick(event) {
this.paginator.nextPage();
this.paginator.previousPage();
this.paginator.paginate(0);
}
- En la versión 16.0.x, se elimina el método
getCellByColumnVisibleIndex(rowIndex: number, index: number)de cuadrilla. En su lugar, usa:getCellByKey(rowSelector: any, columnField: string)ogetCellByColumn(rowIndex: number, columnField: string). Ejemplo:
// prior version 16.0.x
const cell = grid.getCellByColumnVisibleIndex(rowIndex, columnIndex);
// after version 16.0.x
const rowKey = grid.getRowByIndex(rowIndex).key;
const columnField = grid.getColumnByVisibleIndex(columnIndex).field;
const cell = grid.getCellByKey(rowKey, columnField);
const cell = grid.getCellByColumn(rowIndex, columnField);
From 15.0.x to 15.1.x
- Cambio radical
rowSelectionChangingEl tipo de argumentos cambia. Ahora lasoldSelectioncoleccionesnewSelectionaddedremovedy que forman parte de laIRowSelectionEventArgsinterfaz ya no consisten en las llaves de fila de los elementos seleccionados (cuando la cuadrícula ha establecido una clave primaria), sino que en cualquier caso se emiten los datos de fila. Cuando la cuadrícula trabaja con datos remotos y se establece aprimaryKey, para las filas seleccionadas que no forman parte actualmente de la vista de cuadrícula, se emitirá un objeto de datos parcial de fila.
Si tu código enrowSelectionChanging el gestor de eventos dependía de leer primaryKeys del argumento de evento, actualízalo de la siguiente manera:
// prior version 15.1.x
public handleRowSelection(e: IRowSelectionEventArgs): void {
this.selectedRows = e.newSelection;
}
// after version 15.1.x
public handleRowSelection(e: IRowSelectionEventArgs): void {
this.selectedRows = e.newSelection.map(rec => {
return rec[e.owner?.primaryKey]
});
}
Cambio de comportamiento Cuando se elimina la fila seleccionada del componente de la cuadrícula,
rowSelectionChangingno se emite el evento.Cambio Visual
En 15.1 los tamaños de los componentes de entrada han aumentado. Esto es más notorio cuando se utiliza el tema Material. Hacemos esto para que coincida con las especificaciones del material. Si su aplicación se ve afectada negativamente por el cambio, puede usar la entrada displayDensity y configurarla en una configuración más densa, por ejemplo, de cómoda a acogedora o de acogedora a compacta.
Ejemplo
<igx-input-group displayDensity="cosy">
...
</igx-input-group>
<igx-select displayDensity="cosy">
...
</igx-select>
<igx-combo displayDensity="cosy">
</igx-combo>
<igx-simple-combo displayDensity="cosy">
...
</igx-simple-combo>
En 15.1, los componentes de selección y combinación ahora tienen un fondo alrededor del ícono de alternancia. Puedes cambiar el fondo y el color del icono usando scss o css.
Ejemplo
$my-select: select-theme( $toggle-button-background: red, $toggle-button-foreground: #fff, ); $my-combo: combo-theme( $toggle-button-background: red, $toggle-button-foreground: #fff, ); @include css-vars($my-select); @include css-vars($my-combo);Ejemplo
.igx-select { --igx-select-toggle-button-background: red; --igx-select-toggle-button-foreground: #fff; } .igx-combo { --igx-combo-toggle-button-background: red; --igx-combo-toggle-button-foreground: #fff; }
From 14.2.x to 15.0.x
General
igxGrid,igxHierarchicalGrid,igxTreeGrid- Los parámetros en las plantillas de cuadrícula ahora tienen tipos para su contexto. Esto también puede causar problemas si la aplicación está en modo de plantilla estricta y utiliza el tipo incorrecto. Referencias a la plantilla que pueden requerir conversión:
IgxColumnComponent-ColumnType(por ejemplo, el parámetro columna en)igxFilterCellTemplateIgxGridCell-CellType(por ejemplo, el parámetro de la célula enigxCellla plantilla)
- Los parámetros en las plantillas de cuadrícula ahora tienen tipos para su contexto. Esto también puede causar problemas si la aplicación está en modo de plantilla estricta y utiliza el tipo incorrecto. Referencias a la plantilla que pueden requerir conversión:
Ignite UI for Angular depende del tema igniteui. Añade la siguiente configuración de preprocesador en tu
angular.jsonarchivo.
"build": { "options": { "stylePreprocessorOptions": { "includePaths": ["node_modules"] } } } '''
Cambio de interrupción: Todas las variables globales CSS para configuración de temas, colores, elevaciones y tipografía han cambiado el prefijo de
--igxa.--igEste cambio no afecta a las variables globales de los componentes;Example:
En 14.2.x:
:root { --igx-typography: 'Titillium Web', sans-serif; }En 15.0.x esto se convierte en:
:root { --ig-typography: 'Titillium Web', sans-serif; }
Themes
Breaking Change: El
graysargumento de entrada ha sido renombrado agray.
Así es como afectará eso al código existente:En 14.2.x:
$my-palette: palette( $primary: #09f, $secondary: #e41c77, $grays: #000 ); .my-class { background: color($color: 'grays', $variant: 300); color: contrast-color($color: 'grays', $variant: 300); border-color: hsl(var(--igx-grays-500)); }En 15.0.x y en adelante:
$my-palette: palette( $primary: #09f, $secondary: #e41c77, $gray: #000 ); .my-class { background: color($color: 'gray', $variant: 300); color: contrast-color($color: 'gray', $variant: 300); border-color: hsl(var(--ig-gray-500)); }Cambio importante: la generación de variables CSS para una paleta ahora se realiza mediante el mixin de paleta, en lugar del mixin de vars de paleta.
Cambio interrumpido: la función de paleta ahora requiere que se pase un color de superficie, mientras que pasar un valor para ese
graycolor es opcional. Si no se proporciona un valor para el color base gris, se generará automáticamente en función de la claridad del color de la superficie: el color superficial claro da lugar a un color base gris negro(#000), mientras que un color oscuro genera un gris base blanco(#fff). Cuando generas una paleta, tienes que tener en cuenta que ya no hay valores predeterminados para info, éxito, error y colores de advertencia. Tienes que configurarlos explícitamente si quieres usarlos. También puedes coger esos colores de una paleta existente si no quieres crear los valores tú mismo.Ejemplo
$my-palette: palette( $primary: #09f, $secondary: #e41c77, $surface: #fff, $info: color($light-material-palette, 'info'), $success: color($light-material-palette, 'success'), $error: color($light-material-palette, 'error'), $warn: color($light-material-palette, 'warn'), ); @include palette($my-palette);Cambio importante: el parámetro de paleta ahora se elimina de todos los temas de componentes. Puede utilizar el mixin de paleta para definir el alcance de una paleta personalizada para un tema de componente personalizado. Desde que dejamos de admitir IE11, todos los temas de componentes se refieren a las variables CSS globales para colores, elevaciones, tipografía, etc., por lo que ya no es necesario pasar una paleta personalizada a un tema de componente.
Generando un tema personalizado con una paleta personalizada:
// app.component.scss $my-palette: palette( $primary: royalblue, $secondary: orange, $surface: white ); $avatar: avatar-theme( $background: color($color: 'primary'), $color: contrast-color($color: 'primary') ); :host ::ng-deep { // Include the custom palette in the scope of the app component. // It will have a higher specificity than the global palette. @include palette($my-palette): .my-avatar { @include avatar($avatar); } }
Tipografía
Cambio importante: el mixin de estilo de letra ahora no acepta la escala de tipo como parámetro, solo el nombre de la categoría.
En 14.2.x y anteriores:
.my-class { @include type-style($type-scale: $my-type-scale, $category: h1); }En 15.0.x y posteriores:
.my-class { @include type-style(h1); }
Elevaciones
Cambio importante: la función de elevación ahora tiene solo un argumento con nombre: $name (el nombre de la elevación).
Cambio de interrupción: la función de elevaciones ha sido eliminada, ahora puedes configurar los colores de elevación usando el
configure-elevationsmixin.En 14.2.x y anteriores:
.my-class { box-shadow: elevation($elevations, $elevation: 8); }En 15.0.x y posteriores:
.my-class { box-shadow: elevation(8); }
Grid Toolbar
Cambio de ruptura: los
IgxGridToolbarTitleDirectiveyIgxGridToolbarActionsDirectivese han convertido en componentes, manteniendo solo el selector de elementos. Para aplicaciones que usan el marcado de elemento preferido de<igx-grid-toolbar-title>y<igx-grid-toolbar-actions>no debería haber ningún cambio funcional. Las aplicaciones que usen lasigxGridToolbarTitledirectivas yigxGridToolbarActionsen otros elementos tendrán que convertirlas en los elementos mencionados en su lugar:From:
<igx-grid-toolbar> <span igxGridToolbarTitle>Title</span > <div igxGridToolbarActions> ... </div> </igx-grid-toolbar>To:
<igx-grid-toolbar> <igx-grid-toolbar-title>Title</igx-grid-toolbar-title> <igx-grid-toolbar-actions> ... </igx-grid-toolbar-actions> </igx-grid-toolbar>
From 13.1.x to 13.2.x
Themes
- Cambio de última hora: todas las hojas de estilo específicas de RTL han sido eliminadas. Ignite UI temas ahora soportan la dirección RTL por defecto. Los usuarios que hayan utilizado
*-rtl.csspreviamente temas específicos deben cambiar a los archivos de temas normales.
From 13.0.x to 13.1.x
General
igxGrid,igxHierarchicalGrid,igxTreeGridCambio de última hora: La propiedad de las
movablecolumnas ha sido obsoleta. Utiliza la propiedad de la cuadrículamovingexpuesta:<igx-grid [moving]="true"> </igx-grid>
IgxHierarchicalGrid- Breaking Change: El servicio público de API para los componentes
hgridAPIigxHierarchicalGrid e igxRowIsland se renombra agridAPI.
- Breaking Change: El servicio público de API para los componentes
IgxToastCambio de Última Hora - La
igx-toastpropiedad obsoletapositionha sido eliminada. Sugerimos usarpositionSettingsla propiedad de la siguiente manera:@ViewChild('toast', { static: true }) public toast: IgxToastComponent; public ngOnInit(): void { this.toast.positionSettings.verticalDirection = VerticalAlignment.Middle; }
From 12.2.x to 13.0.x
General
IE discontinued supportIgxDialog- Cambio repentino: la animación predeterminada de apertura/cierre de la posición ha sido cambiada a/
fadeInfadeOut.
- Cambio repentino: la animación predeterminada de apertura/cierre de la posición ha sido cambiada a/
igxGrid,igxHierarchicalGrid,igxTreeGridCambio de ruptura: Las siguientes entradas obsoletas han sido eliminadas -
showToolbar,toolbarTitlecolumnHiding,columnHidingTitle,,hiddenColumnsText,,columnPinning,columnPinningTitle.pinnedColumnsTextÚsateIgxGridToolbarComponent,IgxGridToolbarHidingComponentIgxGridToolbarPinningComponenten su lugar.Cambio interrumpido: al añadir un
igx-toolbarcomponente, ahora deberías especificar manualmente qué funciones quieres activar: ocultar columnas, fijar, exportar en Excel. El Filtrado Avanzado puede activarse mediante laallowAdvancedFilteringpropiedad de entrada en la cuadrícula, pero se recomienda activarlo declarativamente con marcado, como con las demás funciones.Breaking Change: El
rowSelectedevento se renombra pararowSelectionChangingreflejar mejor su función.Breaking Change: El
columnSelectedevento se renombra paracolumnSelectionChangingreflejar mejor su función.Breaking Change:
columnsCollectionse elimina. Úsalocolumnsen su lugar. Si en determinadas ocasiones devuelvecolumnsun array vacío, consulta las columnas usandoViewChildreny accede a las que en:ngAfterViewInit@ViewChildren(IgxColumnComponent, { read: IgxColumnComponent }) public columns: QueryList<IgxColumnComponent>;Cambio de ruptura: al aplicar una directiva personalizada en la cuadrícula, inyecta el
IGX_GRID_BASEtoken en el constructor para obtener referencia a la cuadrícula anfitriona:<igx-grid customDirective ...></igx-grid>@Directive({ selector: '[customDirective]' }) export class customDirective { constructor(@Host() @Optional() @Inject(IGX_GRID_BASE) grid: IgxGridBaseDirective) { }
RowDirective,RowTypeLas propiedades de Breaking Change
rowDatayrowIDse eliminan deRowDirectivey de las clases que implementan laRowTypeinterfaz. Úsaladataykeyen su lugar. Úsalong updatepara migración automática. La migración automática no podrá captar algunos ejemplos de plantillas, donde el objeto de contexto plantilla no está tipado:<ng-template igxCell let-cell="cell"> <span>{{ cell.rowID }}</span> <span>{{ cell.row.rowData.ProductID }}</span> </ng-template>Actualice dichas plantillas manualmente para
<span>{{ cell.key }}</span> <span>{{ cell.row.data.ProductID }}</span>
igxGrid- Expuso una
groupStrategyentrada que funciona desortStrategyforma similar, permitiendo la personalización del comportamiento de agrupación de la cuadrícula.
- Expuso una
IgxCsvExporterService,IgxExcelExporterService- Ya no es necesario proporcionar servicios de exportador en la aplicación, ya que ahora se inyectan en el nivel raíz.
IgxGridToolbarPinningComponent,IgxGridToolbarHidingComponent- Entrada nueva
buttonTextexpuesta que establece el texto que se muestra dentro del botón desplegable en la barra de herramientas.
- Entrada nueva
IgxCombo- Entrada añadida
groupSortingDirection, que permite establecer el orden de ordenación de los grupos.
- Entrada añadida
IgxGrid,IgxTreeGrid,IgxHierarchicalGrid- Se añadieron nuevas directivas para reconfigurar indicadores de ordenación de cabeceras -
IgxSortHeaderIconDirective,IgxSortAscendingHeaderIconDirectiveyIgxSortDescendingHeaderIconDirective.
- Se añadieron nuevas directivas para reconfigurar indicadores de ordenación de cabeceras -
IgxDialog- Se añadió
focusTrapuna entrada para determinar si el enfoque de la tecla Tab queda atrapado dentro del diálogo al abrirlo. Por defectotrue.
- Se añadió
IgxColumnActionsComponent- Cambio importante: se ha eliminado la siguiente entrada
- Entrada
columns. UsaigxGridcolumnsinput en su lugar.
- Entrada
- Cambio importante: se ha eliminado la siguiente entrada
IgxCarousel- Cambios de Última Hora: El tipo
CarouselAnimationTypede animación del carrusel se renombra aHorizontalAnimationType.
- Cambios de Última Hora: El tipo
IgxGridStateDirective- ahora soportadisableHidingcolumn, prop y grupos columnas
Tematización
- La propiedad de componente
colorIcon ha sido descontinuada. Usastyle.colorla propiedad CSS para cambiar su color predeterminado. Ejemplos:
<igx-icon [style.color]="'#e41c77'">home</igx-icon>
<igx-icon style.color="{{ col.hasSummary ? '#e41c77' : '' }}">functions</igx-icon>
- Módulos Sass: El motor de tematización ha cambiado a módulos Sass. Este cambio significa que todas las funciones de la biblioteca de temas (temas componentes, etc.), mezclas (mixinas componentes, etc.) y variables ahora provienen
forwardedde un solo archivo. Para usar correctamente la biblioteca de temáticas de Sasso, tu proyecto debe utilizar Dart Sass versión 1.33.0 o posterior y cambiar todas las importaciones de la biblioteca de temática desde:
// free version
@import '~igniteui-angular/lib/core/styles/themes/index';
// licensed version
@import '~@infragistics/igniteui-angular/lib/core/styles/themes/index';
to:
// free version
@use 'igniteui-angular/theming' as *;
// licensed version:
@use '@infragistics/igniteui-angular/theming' as *;
Si desea importar toda la biblioteca de temas solo una vez y luego usarla en otros archivos Sass en su aplicación, asegúrese de reenviarla. Los archivos Sass importados no se reenviarán automáticamente.
Before:
// _variables.scss
// free version
@import '~igniteui-angular/lib/core/styles/themes/index';
// licensed version
@import '~@infragistics/igniteui-angular/lib/core/styles/themes/index';
// _other-file.scss
@import 'variables';
After:
// _variables.scss
// free versioin
@use 'igniteui-angular/theming' as *;
@forward 'igniteui-angular/theming';
// licensed version
@use '@infragistics/igniteui-angular/theming' as *;
@forward '@infragistics/igniteui-angular/theming';
// _other-file.scss
@use 'variables' as *;
Paletas y esquemas:
Las variables de la paleta CSS ya no se refieren a valores HEX, sino que representan una lista de 3 valores H, S y L, lo que significa que deben pasarse a
hsllas funciones CSS ohslao.
Before:
.some-class {
background: var(--igx-surface-500); // returns HEX color
}
After:
.some-class {
background: hsl(var(--igx-surface-500)); // returns a list of H, S, L
}
Esto se hizo para que las paletas se puedan cambiar en tiempo de ejecución utilizando únicamente variables CSS. De esta manera, el canal alfa para un color de paleta determinado se puede modificar en tiempo de ejecución sin afectar el color de la paleta subyacente.
- Asegúrese de pasar la paleta y el esquema de componentes correctos a sus componentes personalizados y temas globales. Si desea crear un tema oscuro global, asegúrese de seleccionar un tono de color más claro para su color gris, por ejemplo:
$my-dark-palette: palette(
$primary: olive,
$secondary: yellow,
$grays: #fff
);
@include dark-theme($palette: $my-dark-palette);
Del mismo modo, los temas claros requieren un tono de gris más oscuro y un esquema de color claro.
Si no has excluido ningún tema componente del tema global pero aún quieres crear tus propios temas de reemplazo personalizados usando elcss-vars mixin, asegúrate de que el tema tenga la paleta correcta y el esquema correspondiente:
$my-custom-grid: grid-theme(
$palette: $my-dark-palette,
$schema: $dark-schema
);
@include css-vars($my-custom-grid);
- Temas de componentes excluidos:
En caso de que haya excluido algunos temas de componentes del tema global y haya creado temas de reemplazo personalizados, debe asegurarse de que el mixin de componentes esté incluido y se le pase el tema de componente correcto:
$my-dark-palette: palette(
...
$exclude: ('igx-grid')
);
$my-custom-grid: grid-theme(
$palette: $my-dark-palette,
$schema: $dark-schema
);
// Ensuregrid is included:
@include grid($my-custom-grid);
En caso de que los temas de tus componentes personalizados se declaren en un archivo Sass de componentes separado, distinto al globalstyles.scss, asegúrate de que elcore mixin también esté incluido.
// free version
@use 'igniteui-angular/theming' as *;
// licensed version
@use '@infragistics/igniteui-angular/theming' as *;
// Include the core module mixin.
@include core();
// Create your theme.
$my-custom-grid: grid-theme(
$palette: $my-dark-palette,
$schema: $dark-schema
);
// Include your custom theme styles.
@include grid($my-custom-grid);
Para entender mejor el Sistema de Módulos Sass, puedes leer este excelente artículo de Miriam Suzanne;
From 12.0.x to 12.1.x
Grids
Cambios importantes:
IgxPaginatorComponent- La forma en que el Paginador se instancia en la cuadrícula ha cambiado. Ahora es un componente separado proyectado en el árbol de la cuadrícula. Así, la[paging]="true"propiedad se elimina de todas las cuadrículas y todas las demás propiedades relacionadas con el paginador en la cuadrícula quedan obsoletas. Se recomienda seguir las directrices para habilitarGrid Pagingfuncionalidades descritas en el tema de Paginación.IgxPageSizeSelectorComponentyIgxPageNavigationComponentse introducen para facilitar la implementación de cualquier contenido personalizado:<igx-paginator #paginator> <igx-paginator-content> <igx-page-size></igx-page-size> [My custom text] <igx-page-nav></igx-page-nav> </igx-paginator-content> </igx-paginator>La API para el componente de paginación se cambió durante la refactorización y muchas de las propiedades antiguas ahora están obsoletas. Desafortunadamente, tener una migración adecuada para algunos de estos cambios es complicado por decir lo menos, por lo que cualquier error debe manejarse a nivel de aplicación.
Las siguientes propiedades están obsoletas en Grid:
- paginación, página por página, totalPages, isFirstPage, isLastPage, pageChange, perPageChange, pagingDone
Los siguientes métodos también están en desuso:
- siguiente página()
- pagina anterior()
Se ha eliminado la siguiente propiedad:
- paginationTemplate - para definir una plantilla personalizada, utiliza la
igx-paginator-content
- paginationTemplate - para definir una plantilla personalizada, utiliza la
Detalles de HierarchicalGrid - El siguiente uso de
*igxPaginatorDirectiva es necesario para habilitar el paginado en RowIslands:<igx-hierarchical-grid #hGrid > <igx-column *ngFor="let c of hColumns" [field]="c.field"> </igx-column> <igx-row-island [key]="'childData'" [autoGenerate]="true"> <igx-row-island [key]="'childData'" [autoGenerate]="true"> <igx-paginator *igxPaginator></igx-paginator> </igx-row-island> <igx-paginator *igxPaginator></igx-paginator> </igx-row-island> <igx-row-island [key]="'childData2'" [autoGenerate]="true"> <igx-paginator *igxPaginator></igx-paginator> </igx-row-island> <igx-paginator></igx-paginator> </igx-hierarchical-grid>Aunque la migración moverá el contenido de tu plantilla dentro del
igx-paginator-contentcontenido, puede que no resuelva todas las encuentas de plantillas. Asegúrate de revisar tus archivos de plantilla después de la migración. Las siguientes encuadernaciones deben cambiarse manualmente a medida que estas propiedades han sido eliminadas (pagerEnabled,pagerHidden,dropdownEnabled,):dropdownHiddenFrom:
<igx-paginator #paginator [pagerEnabled]="!isPagerDisabled" [pagerHidden]="isPagerHidden" [dropdownHidden]="isDropdownHidden"> </igx-paginator>To:
<igx-paginator #paginator *ngIf="!isPagerDisabled"> <igx-paginator-content> <igx-page-size *ngIf="isDropdownHidden"></igx-page-size> <igx-page-nav *ngIf="isPagerHidden"></igx-page-nav> </igx-paginator-content> </igx-paginator>IgxGridCellComponent, IgxTreeGridCellComponent, IgxHierarchicalGridCellComponent e IgxGridExpandableCellComponent ya no están expuestos en la API pública. Consulta las secciones siguientes para una guía detallada sobre cómo actualizar al nuevo
IgxGridCell.
Desuso de la red:
El patrón DI para proporcionar
IgxGridTransactionestá obsoleto. Lo siguiente seguirá funcionando, pero se recomienda refactorizarlo, ya que probablemente se eliminará en una versión futura:@Component({ template: `<igx-grid [data]="data"> ... </igx-grid>`, providers: [{ provide: IgxGridTransaction, useClass: IgxTransactionService }], ... }) export class MyCustomComponent { ... }Para lograr el comportamiento anterior, deberías usar la entrada recién añadida
batchEditing:@Component({ template: `<igx-grid [data]="data" [batchEditing]="true"> ... </igx-grid>` ... }) export class MyCustomComponent { ... }getCellByColumnVisibleIndexahora está obsoleto y será eliminado en la próxima versión mayor. ÚsategetCellByKey,getCellByColumnen su lugar.
IgxGridCell migration
IgxGridCellComponent, IgxTreeGridCellComponent, IgxHierarchicalGridCellComponent, IgxGridExpandableCellComponent ya no están expuestos en la API pública.
Las APIs públicas, que antes devolvían una instancia de una de las anteriores, ahora devuelven una instancia de
IgxGridCell:
const cell = grid.getCellByColumn(0, 'ProductID'); // returns IgxGridCell
const cell = grid.getCellByKey('ALFKI', 'ProductID'); // returns IgxGridCell
const cell = grid.getCellByColumnVisibleIndex(0, 0); // returns IgxGridCell
const rowCells = grid.getRowByIndex(0).cells; // returns IgxGridCell[]
const selectedCells = grid.selectedCells; // returns IgxGridCell[]
const cells = grid.getColumnByName('ProductID').cells; // returns IgxGridCell[]
cellpropiedad en losIGridCellEventArgsargumentos de evento emitidos por los eventos cellClick, selected, contextMenu y doubleClick es ahora una instancia deIgxGridCelllet-cellPropiedad en la plantilla yaIgxGridCelllo es.getCellByColumnVisibleIndexahora está obsoleto y será eliminado en la próxima versión mayor. ÚsategetCellByKey,getCellByColumnen su lugar.
Tenga en cuenta:
- ng update migrará los usos de IgxGridCellComponent, IgxTreeGridCellComponent, IgxHierarchicalGridCellComponent, IgxGridExpandableCellComponent, como importaciones, tipados y casts. Si un lugar en tu código que use cualquiera de los anteriores no está migrado, simplemente elimina el tipado/cast, o cámbialo con
IgxGridCellello. - getCellByIndex y otros métodos devolverán un valor indefinido, si la fila en ese índice no es una fila de datos, sino IgxGroupByRow, IgxSummaryRow, fila de detalles, etc.
Themes
Debido a quejas relacionadas con advertencias de compilación (véase #9793) ahora usamos lamath.div función; Esta funcionalidad es compatible con Dart Sass desde la versión 1.33.0 en adelante.
Solución
Si por cualquier motivo ves errores de compilación de Sass diciendomath.div que no es una función conocida, significa que estás usando una versión desactualizada de Sass en tu proyecto.
Actualización a la última versión de Angular usando
ng updateAngular 12.1.0+ usa el compilador dart-sass por defecto.ng update [options]Si por alguna razón no usas la CLI Ignite UI / Angular, tendrías que reemplazarla
node-sasssassen tu proyecto Node.npm uninstall node-sass npm install sass --save-devSi por alguna razón no puedes actualizar a la última versión de Angular usando el método anterior, puedes volver al antiguo método de división de Sass configurando un indicador global en tu archivo Sass:
$__legacy-libsass: true;
From 11.1.x to 12.0.x
Themes
- Cambios importantes:
IgxAvatarEl tema se ha simplificado. El número de parámetros de tema (avatar-theme) se ha reducido significativamente y ya no incluye parámetros prefijos(icon-*,initials-*,image-*) ni parámetros con sufijo(border-radius-*). Las actualizaciones realizadas conng updatemigrarán los temas de avatar existentes, pero puede ser necesario hacer algunos ajustes adicionales para compensar la ausencia de parámetros prefijados y sufijos.Deberá modificar los temas de avatar específicos del tipo existente de la siguiente manera:
Por ejemplo, esto:
$avatar-theme: avatar-theme( $initials-background: blue, $initials-color: orange, $icon-background: blue, $icon-color: orange, ); @include avatar($avatar-theme);Necesita transformarse en esto:
$initials-avatar: avatar-theme( $background: blue, $color: orange, ); $icon-avatar: avatar-theme( $background: blue, $color: orange, ); .initials-avatar { @include avatar($initials-avatar); } .icon-avatar { @include avatar($icon-avatar); }IgxButtonEl tema se ha simplificado. El número de parámetros de tema (button-theme) se ha reducido significativamente y ya no incluye parámetros prefijos (flat-*,raised-*, etc.). Las actualizaciones realizadas migraránng updatelos temas de botones existentes, pero puede ser necesario hacer algunos ajustes adicionales para tener en cuenta la ausencia de parámetros prefijados.Para lograr el mismo resultado que en el fragmento de código a continuación.
<button igxButton="raised">Raised button</button> <button igxButton="outlined">Outlined button</button>$my-button-theme: button-theme( $raised-background: red, $outlined-outline-color: green ); @include css-vars($my-button-theme);Tienes que crear un tema separado para cada tipo de botón y asignarlo a un selector CSS.
<div class="my-raised-btn"> <button igxButton="raised">Raised button</button> </div> <div class="my-outlined-btn"> <button igxButton="outlined">Outlined button</button> </div>$my-raised-button: button-theme( $background: red ); $my-outlined-button: button-theme( $border-color: red ); .my-raised-btn { @include css-vars($my-raised-button); } .my-outlined-btn { @include css-vars($my-outlined-button); }Como puedes ver, dado que los
button-themeparámetros ahora tienen los mismos nombres para cada tipo de botón, tenemos que asignar nuestros temas de botón a un selector CSS para tener diferentes colores para distintos tipos.Aquí puedes ver todas las propiedades disponibles de la
button-themeLa
typographymezcla ya no se incluye implícitamentecore. Para usar nuestros estilos tipográficos tienes que incluir la mezcla explícitamente despuéscorey antestheme:// in styles.scss @include core(); @include typography( $font-family: $material-typeface, $type-scale: $material-type-scale ); @include theme();Important
La
coremezcla siempre debe incluirse primero.Para cada tema incluido en Ignite UI for Angular proporcionamos variables específicas
font-familytype-scaley variables que puedes utilizar:Tema Familia tipográfica Tipo Escala Material $tipo-de-material $escala-tipo-material Fluido $ tipo de letra fluido $ escala de tipo fluido Oreja $bootstrap-tipo de letra $bootstrap-tipo-escala Índigo $tipo de letra índigo $escala-tipo-índigo
IgxBottomNav component
El IgxBottomNavComponent fue completamente refactorizado para proporcionar una forma más flexible y descriptiva de definir encabezados y contenidos de pestañas. Se recomienda actualizar mediante ng update para migrar las definiciones de igx-bottom-nav existentes a las nuevas.
Plantilla
La nueva estructura define los componentes inferiores de los ítems de navegación, cada uno envolviendo una cabecera y un componente de contenido. Los encabezados suelen contener un icono (
Material guidelines), pero bien podrían tener una etiqueta o cualquier otro contenido personalizado.Para fines de diseño del encabezado, introdujimos dos nuevas directrices -
igxBottomNavHeaderLabelyigxBottomNavHeaderIcon.Como el componente de cabecera ahora permite añadir cualquier contenido, la
igxTabdirectiva, que antes se usaba para replantar la cabecera de la pestaña, fue eliminada porque ya no es necesaria.Cuando el componente se utiliza en un escenario de navegación, la
routerLinkdirectiva debe estar vinculada al componente del encabezado.<igx-bottom-nav> <igx-bottom-nav-item> <igx-bottom-nav-header> <igx-icon igxBottomNavHeaderIcon>folder</igx-icon> <span igxBottomNavHeaderLabel>Tab 1</span> </igx-bottom-nav-header> <igx-bottom-nav-content> Content 1 </igx-bottom-nav-content> </igx-bottom-nav-item> ... </igx-bottom-nav>
Cambios de API
- Se retiraron las
iditemStylepanelsviewTabscontentTabspropiedadestabsy las propiedades. Actualmente, laitemspropiedad devuelve la colección de tabulaciones. - Se cambiaron las siguientes propiedades:
- La propiedad del
isSelectedítem de la pestaña fue renombrada aselected. - La
selectedTabpropiedad fue renombrada comoselectedItem
- La propiedad del
- Los
onTabSelectedeventos yonTabDeselectedfueron eliminados. Introdujimos tres nuevos eventosselectedIndexChangingselectedIndexChangeselectedItemChangeque ofrecen más flexibilidad y control sobre la selección de las pestañas. Desafortunadamente, disponer de una migración adecuada para estos cambios de eventos es, como poco, complicado, por lo que cualquier error debe gestionarse a nivel de proyecto.
- Se retiraron las
IgxTabs component
El IgxTabsComponent fue completamente refactorizado para proporcionar una forma más flexible y descriptiva de definir encabezados y contenidos de pestañas. Se recomienda actualizar mediante ng update para migrar las definiciones de igx-tabs existentes a las nuevas.
Plantilla
La nueva estructura define los componentes de los elementos de la pestaña, cada uno de los cuales incluye un encabezado y un componente de contenido. Los encabezados suelen contener un icono y una etiqueta, pero también pueden tener cualquier otro contenido personalizado.
Para fines de diseño del encabezado, introdujimos dos nuevas directrices -
igxTabHeaderLabelyigxTabHeaderIcon.Como el componente de cabecera ahora permite añadir cualquier contenido, la
igxTabdirectiva, que antes se usaba para replantar la cabecera de la pestaña, fue eliminada porque ya no es necesaria.Cuando el componente se utiliza en un escenario de navegación, la
routerLinkdirectiva debe estar vinculada al componente del encabezado.<igx-tabs> <igx-tab-item> <igx-tab-header> <igx-icon igxTabHeaderIcon>folder</igx-icon> <span igxTabHeaderLabel>Tab 1</span> </igx-tab-header> <igx-tab-content> <h1>Tab 1 Content</h1> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> </igx-tab-content> </igx-tab-item> ... </igx-tabs>
Cambios de API
-
idgroupsviewTabscontentTabsLas propiedadestabsfueron retiradas. Actualmente, laitemspropiedad devuelve la colección de tabulaciones. - Se cambiaron las siguientes propiedades:
- La propiedad del
isSelectedítem de la pestaña fue renombrada aselected. - La
selectedTabItempropiedad se acortó a.selectedItem - La
typepropiedad, con sus opciones contentFit y fijas, ya no está disponible. El modo de dimensionamiento y posicionamiento del encabezado está actualmente controlado por latabAlignmentpropiedad de entrada, que acepta cuatro valores diferentes: start (por defecto), center, end y justify. El tipo antiguocontentFitcorresponde al valor de alineación actualstarty el tipo antiguofixedal valor actualjustify.
- La propiedad del
- Los
tabItemSelectedeventos ytabItemDeselectedfueron eliminados. Introdujimos tres nuevos eventosselectedIndexChangingselectedIndexChangeselectedItemChangeque ofrecen más flexibilidad y control sobre la selección de las pestañas. Desafortunadamente, disponer de una migración adecuada para estos cambios de eventos es, como poco, complicado, por lo que cualquier error debe gestionarse a nivel de proyecto.
-
IgxGridComponent, IgxTreeGridComponent, IgxHierarchicalGridComponent
- IgxGridRowComponent, IgxTreeGridRowComponent, IgxHierarchicalRowComponent, IgxGridGroupByRowComponent ya no están expuestos en la API pública.
- Las APIs públicas, que antes devolvían una instancia de una de las anteriores, ahora devuelven objetos que implementan la interfaz pública
RowType:
const row = grid.getRowByIndex(0);
const row = grid.getRowByKey(2);
const row = cell.row;
Aunque la API pública deRowType es la misma que la que IgxRowComponent y otros usaban para exponer, por favor, tenga en cuenta:
- toggle, expuesto por el IgxHierarchicalRowComponent, no está disponible. Usar
expandedla propiedad para todos los tipos de filas:
grid.getRowByIndex(0).expanded = false;
*row.rowData_ y row.rowID están obsoletos y serán eliminados por completo a partir de la versión 13. Por favor, utiliza row.data y row.key en su lugar.
- la propiedad row en los argumentos de evento emitidos por onRowPinning, y la propiedad dragData en los argumentos de evento emitidos por onRowDragStart,onRowDragEnd está implementando ahora
RowType - ng update migrará la mayoría de los usos de IgxGridRowComponent, IgxTreeGridRowComponent, IgxHierarchicalRowComponent, IgxGridGroupByRowComponent, como importaciones, tipados y casts. Si un lugar en tu código que use cualquiera de los anteriores no está migrado, simplemente elimina el tipado/cast, o cámbialo con
RowTypeello. - getRowByIndex ahora devolverá un
RowTypeobjeto si la fila en ese índice es una fila resumen (anteriormente usada para devolver indefinida). row.isSummaryRow y row.isGroupByRow devolven true si la fila en el índice es una fila resumen o un grupo por fila.
IgxInputGroupComponent
- La
disabledpropiedad ha sido retirada. La propiedad era engañosa, ya que el estado del grupo de entrada siempre estaba gestionado por el subyacenteigxInput.Ejecutar
ng updategestionará todas las instancias en las que[disabled]se usaron como@Inputplantillas in.Si estás haciendo referencia a la propiedad en un
.tsarchivo:export class CustomComponent { public inputGroup: IgxInputGroupComponent ... this.inputGroup.disabled = false; }Por favor, debes actualizar manualmente tu código para referenciar la propiedad de
disabledla directiva de entrada subyacente:export class CustomComponent { public input: IgxInputDirective ... this.input.disabled = false; }
IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent
- La
valuepropiedad para IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent ahora acepta el formato de cadena ISO 8601. Esto significa que esevaluetipo podría serDateo.string - La
inputFormatpropiedad de IgxDateTimeDirective, IgxDatePickerComponent, IgxTimePickerComponent, IgxDateRangePickerComponent ahora no aceptaypara la parte del año. Deberías actualizarlo tambiényy.
From 10.2.x to 11.0.x
- IgxGrid, IgxTreeGrid, IgxHierarchicalGrid
- La forma en que se instancia la barra de herramientas en la cuadrícula ha cambiado. Ahora es un componente separado proyectado en el árbol de la cuadrícula. Así, la
showToolbarpropiedad se elimina de todas las cuadrículas y todas las demás propiedades relacionadas con la barra de herramientas en la cuadrícula quedan obsoletas. Se recomienda seguir la forma recomendada para activar las funciones de la barra de herramientas, tal como se describe en el tema de la barra de herramientas. - La
igxToolbarCustomContentdirectiva es eliminada. Aunque la migración mueve el contenido de tu plantilla dentro del contenido de la barra de herramientas, no intenta resolver los enlaces de plantillas. Asegúrate de revisar tus archivos de plantilla después de la migración. - La API para el componente de la barra de herramientas se cambió durante la refactorización y muchas de las propiedades antiguas ahora se eliminaron. Desafortunadamente, tener una migración adecuada para estos cambios es complicado por decir lo menos, por lo que cualquier error debe manejarse a nivel de proyecto.
- La forma en que se instancia la barra de herramientas en la cuadrícula ha cambiado. Ahora es un componente separado proyectado en el árbol de la cuadrícula. Así, la
From 10.0.x to 10.1.x
- IgxGrid, IgxTreeGrid, IgxHierarchicalGrid
- Como hemos eliminado las
IgxExcelStyleSortingTemplateDirectivedirectivas de la columnaIgxExcelStyleHidingTemplateDirectiveIgxExcelStyleMovingTemplateDirectiveIgxExcelStylePinningTemplateDirectiveIgxExcelStyleSelectingTemplateDirectivey las que se usan para plantar algunas partes del menú de filtro estilo Excel, podrías usar las directivas recién añadidas para plantar las áreas de operaciones de columna y filtro -IgxExcelStyleColumnOperationsTemplateDirectiveand.IgxExcelStyleFilterOperationsTemplateDirectiveTambién hemos expuesto todos los componentes internos del menú de filtro estilo Excel para que puedan usarse dentro de plantillas personalizadas. Puedes encontrar más información sobre las nuevas directivas de plantilla en el Tema de Filtrado al estilo Excel.
- Como hemos eliminado las
- IgxGrid
El
selectedRows()método ha sido refactorizado en una propiedad de entrada llamada . Este cambio repentino permite a los usuarios modificar fácilmente el estado de selección de la cuadrícula en tiempo de ejecución. También se permite la preselección de filas. Todas las instancias en las que se llama alselectedRows()método deben reescribirse sin paréntesis.Vincular a la
selectedRowspropiedad de entrada podría ser algo así:public mySelectedRows = [0, 1, 2];<igx-grid [data]="myData" rowSelection="multiple" primaryKey="ID" [selectedRows]="mySelectedRows"> <!-- ... --> </igx-grid>
From 9.0.x to 10.0.x
- Menú desplegable Igx
La propiedad de visualización del elemento desplegable ha cambiado de
flexa.blockHemos hecho esto para tener el texto truncado activado por defecto. Debido a ese cambio, si hay más que texto en el contenido del desplegable, el diseño debe gestionarse a nivel de aplicación.El siguiente ejemplo demuestra cómo diseñar un elemento desplegable con un icono y contenido de texto para que estén alineados verticalmente.
<igx-drop-down-item> <div class="my-styles"> <igx-icon>alarm</igx-icon> <span>item text</span> </div> </igx-drop-down-item>.my-styles { display: flex; align-items: center; span { margin-left: 8px; } }
From 8.x.x to 9.0.x
Debido a un cambio interrumpido en Angular 9 proveedores de Hammer ya no se añaden implícitamente, por favor, consulte el siguiente documento para más detalles: Por ello, los siguientes componentes debenHammerModule importarse en el módulo raíz de la aplicación para que las interacciones táctiles funcionen como se esperaba:
- igxGrid
- igxHierarchicalGrid
- igxTreeGrid
- Lista igx
- igxNavigationDrawer
- igxTimePicker
- igxDatePicker
- igxMonthPicker
- igxControl deslizante *
- igxCalendario
- igxCarrusel
* Nota: igxSlider requiere HammerModule para todas las interacciones del usuario.
Puede utilizar el siguiente fragmento de código para actualizar el archivo del módulo raíz de su aplicación.
import { HammerModule } from "@angular/platform-browser";
@NgModule({
...
imports: [
...
HammerModule
]
})
Debido a los cambios de nombre realizados en algunos de losEnumerations que exportamos, es necesario actualizar manualmente para sus miembros. Aquí tienes una lista de todos los cambios realizados que requieren actualización manual:
- Tipo de Avatar.
DEFAULT-> IgxAvatarType.CUSTOM - Escribe.
DEFAULT-> Tipo de IgxBadge.PRIMARY - IgxCardType.
DEFAULT-> IgxCardType.ELEVATED - IgxCardActionsLayout.
DEFAULT-> IgxCardActionsLayout.START - IgxDividerType.
DEFAULT-> IgxDividerType.SOLID - IgxTypeProgress.
DANGER-> IgxTypeProgress.ERROR
Elng update proceso actualizará todos los nombres de enumeración, comoAvatarType,Type, et al. aIgxAvatarType yIgxBadgeType, respectivamente. Todos los demás nombres de los miembros de la enumeración permanecen sin cambios.
From 8.1.x to 8.2.x
IgxDrag
Como
hideBaseOnDraglas entradas de yvisibleestán siendo desutilizadas, para lograr la misma funcionalidad en tu aplicación, puedes usar cualquier forma de ocultar el elemento base que Angular proporcione. Un ejemplo es establecer elvisibilityestilo parahidden, ya que solo lo hará invisible y mantendrá el espacio que ocupa en el DOM:<div igxDrag [ngStyle]="{ 'visibility': targetDragged ? 'hidden' : 'visible' }" (dragStart)="onDragStarted($event)" (dragEnd)="onDragEnded($event)"> Drag me! </div>public targetDragged = false; public onDragStarted(event) { this.targetDragged = true; } public onDragEnded(event) { this.targetDragged = false; }Como
animateOnReleaseydropFinished()también están siendo desutilizados, cualquierdropFinished()uso de método debería ser reemplazado portransitionToOrigin(). De lo contrario, tendrías que llamartransitionToOrigin()dependiendo de cuándo quieras que el elemento arrastrado vuelva a su ubicación original. Ten en cuenta que si la posición del DOM del elemento arrastrado cambia, su ubicación original también cambiará en función de eso.
IgxDrop
Debido a que la estrategia de drop por defecto proporcionada con la
IxgDropdirectiva ya no se aplica por defecto, para que sigas teniendo el mismo comportamiento, necesitas configurar la nueva entradadropStrategycomo la implementación proporcionadaIgxAppendDropStrategy.<div igxDrop [dropStrategy]="appendStrategy"></div>import { IgxAppendDropStrategy } from 'igniteui-angular'; // import { IgxAppendDropStrategy } from '@infragistics/igniteui-angular'; for licensed package public appendStrategy = IgxAppendDropStrategy;Cualquier uso de interfaces
IgxDropEnterEventArgsdeberíaIgxDropLeaveEventArgsser reemplazado porIDragBaseEventArgs.Además, cualquier uso de la
IgxDropEventArgsinterfaz debería ser reemplazado porIDropDroppedEventArgs.
Directiva IgxRowDrag
IRowDragStartEventArgsyIRowDragEndEventArgsque cambien el nombre de Argument para que sea más claro a qué se refiere.ownerargumento se renombra adragDirective. Elownerargumento ahora hace referencia al componente del propietario. Si tu código fuera así:public dragStart(event) { const directive = event.owner; }A partir de la versión 8.2.x se debe actualizar a:
public dragStart(event) { const directive = event.dragDirective; const grid = event.owner; }
IgxCombo
La forma en que se maneja
igx-combola selección y la vinculación de datos cambia.Si la entrada [
valueKey] del combo está definida, el control buscará esa propiedad específica en el array de datos pasado al realizar la selección. Todos los eventos de selección se gestionan con el valor de la propiedad de los elementosvalueKeyde datos. Todos los combos que hanvalueKeyespecificado deben tener su selección/bin-way binding consistir solo en los valores para la propiedad del objeto especificados en la entrada:<igx-combo [data]="cities" valueKey="id" displayKey="name"></igx-combo>export class MyExampleCombo { public data: { name: string, id: string }[] = [{ name: 'London', id: 'UK01' }, { name: 'Sofia', id: 'BG01' }, ...]; ... selectFavorites() { // Selection is handled with the data entries' id properties this.combo.selectItems(['UK01', 'BG01']); } }Si el combo no tiene un
valueKeydefinido, todos los eventos de selección se gestionan con igualdad (===). Todos los combos que no tengan unvalueKeyespecificado deberían tener su selección/enlace bidireccional gestionado con referencias a sus elementos de datos:<igx-combo [data]="cities" displayKey="name"></igx-combo>export class MyExampleCombo { public data: { name: string, id: string }[] = [{ name: 'London', id: 'UK01' }, { name: 'Sofia', id: 'BG01' }, ...]; ... selectFavorites() { // Selection is handled with references to the data entries this.combo.selectItems([this.data[0], this.data[1]]); } }Puede leer más sobre cómo configurar el combo en el archivo Léame y en la documentación oficial.
From 8.0.x to 8.1.x
- El
igx-paginatorcomponente se introduce como un componente independiente y también se utiliza en los componentes de la Red. Ten en cuenta que si tienes la opción configuradapaginationTemplate, puede que tengas que modificar tu CSS para mostrar correctamente la paginación. Esto se debe a que la plantilla ya no se aplica bajo un contenedor específico de paginación con reglas CSS para centrar el contenido, por lo que puede que necesites añadirlas manualmente. El estilo debería ser algo similar a:
<igx-grid #grid [data]="data" [paging]="true" [perPage]="10" [paginationTemplate]="pager">
</igx-grid>
<ng-template #pager>
<div class="pagination-container"></div>
</ng-template>
.pagination-container {
display: flex;
justify-content: center;
align-items: center;
}
From 7.3.x to 8.0.x
- Al actualizar, si te encuentras con el siguiente error
Package "@angular/compiler-cli" has an incompatible peer dependency to "typescript" (requires ">=3.1.1 <3.3", would install "3.4.5")., deberías actualizar@angular/coreprimero el paquete. Esto está relacionado con este conocido problema Angular de CLI - Al actualizar el
igniteui-angularpaquete, si ves el siguiente errorPackage "igniteui-angular" has an incompatible peer dependency to "web-animations-js" (requires "^2.3.1", would install "2.3.2-pr208"), deberías actualizar usandong update igniteui-angular --force. Esto podría pasar si actualizas@angular/corey@angular/cliantes de actualizarigniteui-angular.
From 7.2.x or 7.3.x to 7.3.4
- Si usas el
filterGlobalmétodo deIgxGrid,IgxTreeGridoIgxHierarchicalGrid, debes saber que elconditionparámetro ya no es opcional. Cuando elfilterGlobalmétodo se llama con una condición inválida, no borrará los filtros existentes para todas las columnas.
From 7.1.x to 7.2.x
- Si usas un IgxCombo con
combo.value, debes saber que ahoracombo.valuesolo es un que consigue un consejo. - Si lo usas
IgxTextHighlightDirective, debes saber que lapagepropiedad de entrada está obsoleta,rowIndexcolumnIndexypagelas propiedades de laIActiveHighlightInfointerfaz también están obsoletas. En su lugar,rowsecolumnañaden propiedades opcionales. - Si usas el
button-theme, debes saber que se$button-roundnessha reemplazado para cada tipo de botón por:$flat-border-radius,$raised-border-radius,$outline-border-radius,$fab-border-radius,.$icon-border-radius
From 7.0.x to 7.1.x
- Si usas un IgxGrid con resúmenes en tu aplicación, deberías saber que ahora el
IgxSummaryOperand.operate()método se llama con datos vacíos para calcular la altura necesaria para la fila de resumen. Para operandos de resumen personalizados, el método siempre debe devolver un array de IgxSummaryResult con la longitud adecuada.
Antes de la versión 7.1:
export class CustomSummary extends IgxNumberSummaryOperand {
public operate(data?: any[]): IgxSummaryResult[] {
return [{
key: 'average',
label: 'average',
summaryResult: IgxNumberSummaryOperand.average(data).toFixed(2)
}];
}
}
Desde la versión 7.1:
export class CustomSummary extends IgxNumberSummaryOperand {
public operate(data?: any[]): IgxSummaryResult[] {
return [{
key: 'average',
label: 'average',
summaryResult: data.length ? IgxNumberSummaryOperand.average(data).toFixed(2) : null
}];
}
}
From 6.0.x to 6.1.x
- Si usas un control IgxCombo en tu aplicación y tienes la
itemsMaxWidthopción configurada, deberías cambiar esta opción aitemsWidth