-
Notifications
You must be signed in to change notification settings - Fork 6.8k
Description
Cell definitions like
<td mat-cell *matCellDef="let element"> {{element.position}} </td>do not enforce typing. Even if table dataSource
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">is properly typed, let element is still of type any, which does not allow the TypeScript compiler to type-check the markup inside the cell definition.
On the test page (https://stackblitz.com/edit/mat-tables-typing), I modified the table-basic example from the repo to output a non-existing field (element.non_existing_field), and the project is still compiled without any TypeScript errors.
I am sure I does not need to explain how beneficial strong typing is for early detection of programming errors. Furthermore, TypeScript and strong typing is one of the principal features of Angular as a framework, so I consider it great shame that this feature is not properly leveraged here.
I am not an expert in Angular, so please let me know if there are some Angular limitations that prevent Angular Material from providing proper typing support. I will appreciate if you point me to an appropriate ticket in Angular project I could watch.
Reproduction
https://stackblitz.com/edit/mat-tables-typing
Expected Behavior
In a cell definition like
<td mat-cell *matCellDef="let element"> {{element.position}} </td>the element variable should receive a TypeScript type derived from the type of dataSource input passed to mat-table.
Changing the cell definition into
<td mat-cell *matCellDef="let element"> {{element.non_existing_field}} </td>should cause TypeScript errors to be emitted when the project is AOT-compiled.
Actual Behavior
The element variable receives type any.
Changing the cell definition into
<td mat-cell *matCellDef="let element"> {{element.non_existing_field}} </td>does not trigger any TypeScript errors. I believe, you will have to download the StackBlitz project locally in order to check this.
Environment
- Angular: 8.0.0
- CDK/Material: 8.0.0
- Browser(s): Google Chrome | 74.0.3729.169 (Official Build) (64-bit)
- Operating System: Windows 10