Skip to content

Commit 8ec94af

Browse files
authored
fix(grid-lite): column field NoInfer to avoid fallback type compat issue (#17250)
1 parent 1bedc95 commit 8ec94af

3 files changed

Lines changed: 43 additions & 14 deletions

File tree

projects/igniteui-angular/grids/lite/src/grid-lite-column.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export class IgxGridLiteColumnComponent<T extends object = any> {
7676
//#region Inputs
7777

7878
/** The field from the data for this column. */
79-
public readonly field = input<Keys<T>>();
79+
public readonly field = input<NoInfer<Keys<T>>>();
8080

8181
/** The data type of the column's values. */
8282
public readonly dataType = input<DataType>('string');

src/app/grid-lite/grid-lite.sample.html

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,26 @@
3535
</ng-template>
3636
</igx-grid-lite-column>
3737

38-
<igx-grid-lite-column
39-
field="age"
40-
dataType="number"
41-
header="Age"
42-
filterable
43-
resizable
44-
sortable
45-
></igx-grid-lite-column>
38+
@for(column of columns; track column.field) {
39+
<igx-grid-lite-column
40+
[field]="column.field"
41+
[header]="column.header"
42+
[dataType]="column.dataType"
43+
filterable
44+
resizable
45+
sortable
46+
>
47+
</igx-grid-lite-column>
48+
}
49+
@for(column of typedColumns; track column.field) {
50+
<igx-grid-lite-column
51+
[field]="column.field"
52+
[header]="column.header"
53+
[dataType]="column.dataType"
54+
>
55+
</igx-grid-lite-column>
56+
}
57+
4658
<igx-grid-lite-column field="active" dataType="boolean" header="Active">
4759
<ng-template
4860
igxGridLiteCell

src/app/grid-lite/grid-lite.sample.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,36 @@
1-
import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, viewChild } from '@angular/core';
2-
import { IgxGridLiteCellTemplateDirective, IgxGridLiteColumnComponent, IgxGridLiteComponent, IgxGridLiteFilteringExpression, IgxGridLiteHeaderTemplateDirective, IgxGridLiteSortingExpression, IgxGridLiteSortingOptions } from "igniteui-angular/grids/lite";
3-
import { GridLiteDataService } from './data.service';
1+
import { Component, inject, viewChild } from '@angular/core';
42
import { IgxCheckboxComponent } from 'igniteui-angular';
3+
import {
4+
IgxGridLiteCellTemplateDirective,
5+
IgxGridLiteColumnComponent,
6+
type IgxGridLiteColumnConfiguration,
7+
IgxGridLiteComponent,
8+
type IgxGridLiteFilteringExpression,
9+
IgxGridLiteHeaderTemplateDirective,
10+
type IgxGridLiteSortingExpression,
11+
type IgxGridLiteSortingOptions,
12+
} from "igniteui-angular/grids/lite";
13+
import { GridLiteDataService, type User } from './data.service';
14+
515
@Component({
616
selector: 'app-grid-lite-sample',
717
templateUrl: 'grid-lite.sample.html',
818
styleUrls: ['grid-lite.sample.scss'],
9-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
1019
imports: [IgxCheckboxComponent, IgxGridLiteComponent, IgxGridLiteColumnComponent, IgxGridLiteHeaderTemplateDirective, IgxGridLiteCellTemplateDirective]
1120
})
1221
export class GridLiteSampleComponent {
1322
protected grid = viewChild<IgxGridLiteComponent<any>>('grid');
14-
protected data = [];
23+
protected data: User[] = [];
1524
private dataService = inject(GridLiteDataService);
1625

26+
public columns: IgxGridLiteColumnConfiguration[] = [
27+
{ field: 'age', header: 'Age', dataType: 'number' },
28+
];
29+
30+
public typedColumns: IgxGridLiteColumnConfiguration<User>[] = [
31+
{ field: 'email', header: 'Email', dataType: 'string' },
32+
];
33+
1734
protected sortingExpressions: IgxGridLiteSortingExpression[] = [
1835
{
1936
key: 'firstName',

0 commit comments

Comments
 (0)