AgGrid/Angular 5: o construtor não instanciar a classe de serviço em init() função para a Célula de Renderização em AgGrid

Estou tendo um problema com a versão enterprise do AgGrid e Angular 5.

O Angular página web apps componente de cargas e AgGrid cargas utilizando os seguintes bits de código - isso funciona bem...

public ngOnInit() {
    this.agGridOptions = {
      onGridReady: (grid) => this.onGridReady(grid),
      onCellValueChanged: (grid) => this.updateRowItem(grid),
      enableSorting: false,
      enableFilter: false,
      enableColResize: true,
      unSortIcon: true,
      components : {
        'valueRendererComponent'          : ValueRendererComponent,
        'StartDateRendererComponent' : StartDateRendererComponent,
        'EndDateRendererComponent'   : EndDateRendererComponent
      }
    };
  }

Isso carrega a grade fino e elegante. O problema é quando eu editar uma linha de células valor e as células de renderização de componente é executado um pouco de lógica e atualizações.

Abaixo estão as grades definições de coluna para uma melhor compreensão da forma como as células estão sendo prestados através do componente externo...

const columnDefs = [
      {
        headerName: 'Val',
        field: 'Value',
        width: 500,
        editable: true
      },
      {
        headerName: 'Start Date',
        field: 'StartDate',
        width: 500,
        cellRenderer: 'StartDateRendererComponent',
        editable: true
      },
      {
        headerName: 'End Date',
        field: 'EndDate',
        width: 500,
        cellRenderer : 'EndDateRendererComponent',
        editable: true
      }
    ];

Esse problema que eu estou tendo é com o EndDateRendererComponent (exemplo abaixo) para ser processado através de cellRenderer definição de coluna de parâmetro e não ser capaz de injetar corretamente o ConfigStateService (exemplo abaixo) para o dito componente através Angular 5 constructor() {} o método que faz com que todos os valores em ConfigStateService disponíveis dentro AgGrid de init() de função.

Aqui é o EffectiveEndDateRendererComponent Componente...

import { ConfigStateService } from './../fakepath';

export class EndDateRendererComponent {
  public ConfigStateService: ConfigStateService;
  public eGui: any;

  constructor(
      public configStateService: ConfigStateService,
    ) {
    // this.configStateService = ConfigStateService.prototype;
  }

  public getGui() {
    return this.eGui;
  }

  public init(params) {
    console.log(this.configStateService);

    this.eGui = document.createElement('div');
    const wrapper = document.createElement('div');
    wrapper.innerHTML = params['data']['effectiveEndDate'];
    this.eGui.appendChild(wrapper);
  }
}

Aqui é o ConfigStateService...

import { Injectable } from '@angular/core';
import includes from 'lodash-es/includes';
import difference from 'lodash-es/difference';
import intersection from 'lodash-es/intersection';
import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/observable/of';
import * as moment from 'moment';

@Injectable()
export class ConfigStateService {
  public _addNewSaveButtonsStatus = new BehaviorSubject(false);

  public testing() {
    console.log(this._addNewSaveButtonsStatus)
  }
}

Como visto acima, quando eu tento console.log(this.configStateService) em init() de EndDateRendererComponent, eu estou ficando indefinido. Mas Se eu consola.log(ConfigStateService) fora do componente está claramente a ser importado multa. Além disso, se eu importar o configStateService fora em um componente diferente, que não tem nada a ver com AgGrid, o serviço de instancia e funciona bem, sublinhando a provável realtiy que o problema é com o init() construídos em função de AgGrid e como ele interage com o serviço de injeção.

Como posso acessar todos os valores na ConfigServiceState dentro o init() na minha EndDateRendererComponent?

0
2019-09-18 19:25:30
origem
0 respostas

Veja mais perguntas por marcas