diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-visualizer/recording-visualizer.component.ts b/devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-visualizer/recording-visualizer.component.ts index d3b98790022..d87f0aa87c7 100644 --- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-visualizer/recording-visualizer.component.ts +++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/profiler/recording-timeline/recording-visualizer/recording-visualizer.component.ts @@ -42,8 +42,18 @@ export class RecordingVisualizerComponent { readonly changeDetection = input.required(); readonly cmpVisualizationModes = VisualizationMode; - private readonly selectedNode = linkedSignal({ - source: this.visualizationMode, + + private readonly selectedNodeCleanUpDeps = computed( + // We don't care about the output format as long as + // the value is different when a dependency changes + // (i.e. it acts as a hash). + // NOTE: It's safe to stringify the frames since they + // are valid JSON objects that are also exported as part + // of the profiler results report. + () => JSON.stringify(this.frame()) + this.visualizationMode(), + ); + private readonly selectedNode = linkedSignal({ + source: this.selectedNodeCleanUpDeps, computation: () => null, });