Как получить доступ к значению другого столбца в columnDefs в настройке Ag-Grid Angular? - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть ag-Grid с двумя столбцами: столбец идентификатора и столбец описания.Я создаю определения столбцов этих двух столбцов в columnDefs в методе ngOnInit () в классе TypeScript.

В столбце «Описание» я использую cellRendererFramework для визуализации routerLink в моей ag-Grid.Я использую cellRendererParams для передачи некоторых необходимых параметров моему компоненту рендеринга Angular.Именно здесь, в столбце «Описание», мне нужно получить доступ к значению идентификатора столбца идентификатора и поместить его в параметр cellRendererParams 'resourceId'.Мне нужен этот идентификатор, чтобы создать свой рабочий RouterLink.

Как я могу сделать это в приведенном ниже коде?

ngOnInit() {
  this.columnDefs = [

    // Column A - ID
    { 
        headerName: 'ID', 
        field: 'id', 
        width: 80, 
        sort: 'desc' 
    },

    // Column B - Description
    {
        headerName: 'Description',
        field: 'description',
        width: 150,
        cellRendererFramework: AgGridRouterLinkRendererComponent,
        cellRendererParams: {
            resourcePath: '/leverance/detail',
            resourceId: HERE-I-WOULD-LIKE-TO-ACCESS-THE-ID-VALUE-OF-THE-ID-FIELD-IN-THE-ID-COLUMN-ABOVE
    }

  ];
}

Ответы [ 2 ]

0 голосов
/ 13 августа 2019

Я бы определил столбец B следующим образом:

// Column B - Description
      {
        headerName: 'Description',
        field: 'description',
        width: 150,
        cellRendererFramework: AgGridRouterLinkRendererComponent,
        cellRendererParams(params) {
          return {
            resourcePath: '/leverance/detail',
            resourceId: params.data.id
          }
        }
      }

Таким образом, вы можете получить любые поля в других столбцах.

0 голосов
/ 30 декабря 2018

Я не нашел способа доступа к значению Id внутри ngOnInit () в columnDefs.Вместо этого я мог получить его в методе agInit () в AgRendererComponent.

agInit(params: any): void { this.resourceId = params.data.id; }

ag-grid-router-link-renderer.component.ts

import { Component } from '@angular/core';
import { AgRendererComponent } from 'ag-grid-angular';

@Component({
  template: `
    <a [routerLink]="[params.resourcePath, resourceId]">{{
      params.value
    }}</a>
  `
})
export class AgGridRouterLinkRendererComponent implements AgRendererComponent {
  params: any;
  resourceId: number;
  agInit(params: any): void {
    this.params = params;
    this.resourceId = params.data.id;
  }
  refresh(params: any): boolean {
    return false;
  }
}
...