When the user opens a different report in the designer, it assigns a new report object — the onAssignedReport event lets you capture it.

Handle the assigned-report event (Angular).
@Component({
    imports: [Designer],
    template: `<sti-designer [(report)]="report" [options]="designerOptions"
                            (onAssignedReport)="onAssignedReport($event)"></sti-designer>`
})
export class GetModifiedReportFromTheDesigner {
    report = new Stimulsoft.Report.StiReport();
    designerOptions = new Stimulsoft.Designer.StiDesignerOptions();

    onAssignedReport(args: Stimulsoft.Designer.AssignedReportArgs) {
        this.report = args.report;
    }
}

How it works. The event fires whenever the designer swaps its report, so your component always holds the current template the user is editing.