Hi
I am using Angular 17. Data is not getting displayed. Below is the code.
TypeError: value.replace is not a function at _MatColumnDef._setNameInput (table.mjs:243:41) at set name (table.mjs:365:10) at applyValueToInputField (core.mjs:4035:29) at writeToDirectiveInput (core.mjs:11096:13) at setInputsForProperty (core.mjs:12391:9) at elementPropertyInternal (core.mjs:11692:9) at Module.??property (core.mjs:21289:9) at DynamicMatTableComponent_ng_container_19_Template (dynamic-mat-table.component.html:26:63) at executeTemplate (core.mjs:11268:9) at refreshView (core.mjs:12791:13)
export class DynamicMatTableComponent implements OnInit,AfterViewInit,OnChanges { @Input() title?: string; @Input() arrChildHead: string[] = []; @Input() lstChild: any[] = []; @Input() tabelData: any []= []; @Input() columnArray: string [] = []; @Input() isAction: boolean = false; @Input() columns: any = []; @Input() actionColumn: any = []; @Input() permission: any; dataSource: MatTableDataSource<any>; displayedColumns: string[] = []; constructor(private cdr: ChangeDetectorRef) { this.dataSource = new MatTableDataSource<any>([]); this.paginator = {} as MatPaginator; } defaultImage:string='assets/images/icons/no-photo.png'; ngOnInit(): void { // this.pageSizeOptions = this._common.getPageSizeOptions(); // this.displayedColumns = this.getDisplayedColumns(); } ngOnChanges(changes:SimpleChanges){ this.isLoading = true; if (changes?.['lstChild'] && changes?.['lstChild'].currentValue) { this.dataSource = new MatTableDataSource<any>(this.lstChild); this.dataSource.paginator = this.paginator; this.dataSource.sort = this.sort; this.isLoading = false; console.log(this.lstChild); } } getDisplayedColumns(): string[] { return this.columns.filter((column:any)=>column.visible).map((column:any)=>column.name); } getColumnTitle(columnName: string): string { const column = this.columns.find((col:any) => col.name === columnName); return column ? column.title : ''; } }
<div class="body overflow-auto"> <div class="responsive_table"> <mat-table [dataSource]="dataSource" class="w-100" matSort> <!-- Dynamic Columns --> <ng-container *ngFor="let column of lstChild" [matColumnDef]="column"> <th mat-header-cell *matHeaderCellDef> {{ column }} </th> <td mat-cell *matCellDef="let element"> {{ element[column] }} </td> </ng-container> <!-- Header Row --> <tr mat-header-row *matHeaderRowDef="lstChild"></tr> <!-- Data Rows --> <tr mat-row *matRowDef="let row; columns: lstChild;"></tr> </mat-table> <mat-paginator [pageSizeOptions]="pageSizeOptions" showFirstLastButtons></mat-paginator> </div> </div>
Thanks