Ag-Grid Angle Cell Renderer впрыскивает CellRendererService - PullRequest
0 голосов
/ 03 июля 2018

Я хочу реализовать CellRenderer, который может показать / скрыть ячейку, к которой он присоединен (назовем это ShowHideCellRenderer).

Я хочу, чтобы средство визуализации ячеек использовало средство визуализации ячеек (innerCellRenderer) в качестве параметра, который определяет способ визуализации ячейки, если она видима.

В репозитории ag-grid на github есть GroupCellRenderer, который также использует внутренний рендер:

https://github.com/ag-grid/ag-grid/blob/master/packages/ag-grid/src/ts/rendering/cellRenderers/groupCellRenderer.ts#L245

let rendererPromise:Promise<ICellRendererComp>;
if (params.fullWidth == true) {
    rendererPromise = this.cellRendererService.useFullWidthGroupRowInnerCellRenderer(this.eValue, params);
} else {
    rendererPromise = this.cellRendererService.useInnerCellRenderer(this.params.colDef.cellRendererParams, columnToUse.getColDef(), this.eValue, params);
}

// retain a reference to the created renderer - we'll use this later for cleanup (in destroy)
if (rendererPromise) {
    rendererPromise.then((value:ICellRendererComp) => {
        this.innerCellRenderer = value;
    })
}

Но чтобы сделать то же самое, мне нужно каким-то образом ввести CellRendererService в мой CellRenderer.

Поскольку я использую Angular для создания CellRenderer, декоратор @Autowired, похоже, не работает.

export class ShowHideCellRendererComponent implements ICellRendererAngularComp {
    @Autowired('cellRendererService')
    private cellRendererService: CellRendererService;

    public agInit(params: any): void {
        console.log(this.cellRendererService); // undefined
    }
}

Неужели кто-нибудь знает, как ввести CellRendererService в мой угловой клеточный рендер? Или у вас есть идея, как реализовать рендеринг внутренней ячейки другим способом?

...