Given this columns array in a parent component:
columns = [
{ field: 'field1', title: 'Title 1', width: '100px' },
{ field: 'field2', title: 'Title 2', width: '200px' },
{ field: 'field3', title: 'Title 3' }
];
I can build a Kendo for Angular grid dynamically in a my-table
component:
@Component({
selector: 'my-table',
template: `
<kendo-grid #grid="kendoGrid" [data]="data">
<kendo-grid-column
*ngFor="let column of columns"
field="{{column.field}}"
title="{{column.title}}"
width="{{column.width}}"
</kendo-grid-column>
</kendo-grid>
`
})
export class MyTableComponent {
@Input() data: any[] = [];
@Input() columns: any[] = [];
}
What I need is to programmatically add to the table a column that contains a button, where the button should execute a function in the parent component.
This is an example of the markup that should be rendered by MyTableComponent
:
<kendo-grid-column>
<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
<button kendoButton (click)="edit(dataItem,rowIndex)" [icon]="'edit'"></button>
</ng-template>
</kendo-grid-column>
MyTableComponent
should receive from its parent the information in the columns
array, something like this:
columns: [ { isButton: true, buttonLabel: 'Edit', callbackFunc: parentFunc } ];
Can a template be generated programmatically in the table component?