在ag-Grid的单元格渲染器中使用服务引用时,可能会出现服务undefined的问题。这通常是因为在横向滚动后重新渲染单元格时,服务引用已经丢失。为了解决这个问题,可以使用Angular的Injector,通过Injector获取所需的服务,并在自定义单元格渲染器中使用它。
以下是一个示例代码:
import { Component, Injector } from '@angular/core';
@Component({
selector: 'app-custom-cell-renderer',
template: `{{ rowData.colData }}`
})
export class CustomCellRenderer {
rowData: any;
myService: any;
constructor(private injector: Injector) {}
agInit(params: any) {
this.rowData = params.data;
this.myService = this.injector.get(MyService); // 通过Injector获取服务
}
}
在这个示例中,我们先在注入器中注入了Injector,然后在agInit方法中通过Injector获取MyService。这样,在单元格重新渲染时,服务引用就不会丢失了。