我在Angular项目中有一个单元格渲染类,它在ag网格单元格中生成html输入模板。在水平滚动之后,当输入单元格离开屏幕时,ag网格重新渲染这些输入元素,并且输入元素显示它们的值。下面是我的CellRenderer类:
export class TemplateRendererComponent implements ICellRendererAngularComp {
template: TemplateRef<any>;
templateContext: { $implicit: any, params: any };
refresh(params: any): boolean {
this.templateContext = {
$implicit: params.data,
params,
};
return true;
}
agInit(params: ICellRendererParams): void {
this.template = params[ 'ngTemplate' ];
this.refresh(params);
}
}
如何使这些输入元素保持其值?
根据cellRenderer
生命周期,一旦它不在视图中,就会被销毁。
您可以实现ngOnDestroy()
,并在单元渲染器被破坏之前访问最后一个已知值。
ngOnDestroy() {
// do your stuff here
}
您可以将此值存储在redux存储或服务中。
然后,可以在agInit()
中访问该值,同时重新初始化渲染器。
"suppressColumnVirtualization:设置为true,这样网格就不会虚拟化列。例如,如果您有100列,但由于滚动而只有10列可见,那么所有100列都将始终呈现。默认值:false"来源:https://www.ag-grid.com/javascript-grid-properties/