In Angular, Datagrid, Column Template Doesnt work. Not sure if it happen only in ejs-dialog,
This is the result without the Column Template.

<ejs-dialog
id="dialog"
#dialog
[showCloseIcon]="true"
[allowDragging]="true"
[visible]="false"
[isModal]="true"
width="700px"
>
<ng-template #header>
<p class="font-semibold leading-normal">Workflow Templates Management</p>
</ng-template>
<ng-template #content>
<ejs-grid
[dataSource]="data"
[selectionSettings]="{ mode: 'Row', type: 'Single' }"
(rowSelected)="onRowSelected($event)"
>
<e-columns>
<e-column
field="ID"
headerText="ID"
textAlign="Center"
width="50"
></e-column>
<e-column
field="TemplateName"
headerText="Template Name"
textAlign="Left"
width="150"
></e-column>
<e-column
field="CreatedDate"
headerText="Created Date"
format="yMd"
width="200"
></e-column>
<e-column
field="CreatedBy"
headerText="Created By"
width="100"
></e-column>
<e-column headerText="Action" width="120">
<!-- <ng-template #template let-data>
<button>Delete</button>
</ng-template> -->
</e-column>
</e-columns>
</ejs-grid>
</ng-template>
<ng-template #footerTemplate>
<div class="flex flex-row justify-end gap-2">
<button
ejs-button
cssClass="w-1/2 sm:w-fit !ml-0"
content="Cancel"
type="button"
(click)="onCancel()"
></button>
<button
*ngIf="mode() === 'Select'"
ejs-button
cssClass="e-primary w-1/2 sm:w-fit"
content="Select"
type="button"
[disabled]="taskWorkflowTemplateModel == null"
(click)="onSubmit()"
></button>
</div>
</ng-template>
</ejs-dialog>
When I add, it the data grid doesnt load anymore.
<e-column headerText="Action" width="120">
<ng-template #template let-data>
<button>Delete</button>
</ng-template>
</e-column>

Console show this error
This is the main code
import { Component, signal, ViewChild } from "@angular/core";
import { TaskManagementService } from "@modules/task-management/task-management.service";
import { TaskWorkflowTemplateModel } from "@shared/models/task-management/taskWorkflow/TaskWorkflowTemplateModel";
import { RowSelectEventArgs } from "@syncfusion/ej2-angular-grids";
import { DialogComponent } from "@syncfusion/ej2-angular-popups";
@Component({
selector: "app-workflow-template-management",
templateUrl: "./workflow-template-management.component.html",
styleUrl: "./workflow-template-management.component.css",
})
export class WorkflowTemplateManagementComponent {
@ViewChild("dialog") dialog: DialogComponent;
mode = signal<"View" | "Select">("Select");
// public readonly save = output<TaskWorkflowTemplateModel>();
taskWorkflowTemplateModel: TaskWorkflowTemplateModel;
private _resolver:
| ((value: TaskWorkflowTemplateModel | null) => void)
| null = null;
// Keep reference to the resolver function
data: TaskWorkflowTemplateModel[] = [{
ID : 1,
TemplateName : "",
CreatedDate: new Date(),
CreatedBy: "Doctor",
} as TaskWorkflowTemplateModel];
constructor(private taskManagementService: TaskManagementService) {}
ngOnInit(): void {}
open(): Promise<TaskWorkflowTemplateModel | null> {
this.dialog.show();
// this.loadTemplateList();
// Return a Promise that will resolve when user submits or closes
return new Promise((resolve) => {
this._resolver = resolve;
});
}
async loadTemplateList() {
this.data = (await this.taskManagementService
.GetTaskWorkflowTemplateList()
.toPromise()) as TaskWorkflowTemplateModel[];
}
onRowSelected(args: RowSelectEventArgs): void {
this.taskWorkflowTemplateModel = args.data as TaskWorkflowTemplateModel;
}
onSubmit() {
this.dialog.hide();
this._resolver?.(this.taskWorkflowTemplateModel);
this._resolver = null;
}
loadTemplate(template: TaskWorkflowTemplateModel) {
this.taskWorkflowTemplateModel = template;
this.dialog.hide();
this._resolver?.(this.taskWorkflowTemplateModel);
this._resolver = null;
}
deleteTemplate(template: TaskWorkflowTemplateModel) {
console.log(template);
}
onCancel() {
this.dialog.hide();
this._resolver?.(null);
this._resolver = null;
}
}