Как вызвать метод из модуля рендеринга ячеек в сетке ag - создать раскрывающееся событие щелчка, не срабатывающее из опции?

это мой агрессивный columndef

{
  headerName: 'Type Of Pin',
  field: 'pinType',
  width: 160,
  cellRenderer: this.typeOfPin,
  suppressSorting: true
}

typeOfPin(params) {
    console.log(params);
    // const eDiv = document.createElement('div');
    // const disableVal = true;
    // eDiv.innerHTML =
    return  '<div><select placeholder="Select" class="form-control ag-form-control">' +
      '<option></option>' +
      '<option (click)="test()" selected>Number</option>' +
      '<option onClick="test()" >Random</option>' +
      '</select></div>';
}
test(){
    click('hi');
}

нормальная опция выбора формируется с использованием cellrenderer в агрегированном динамически, событие щелчка не может быть привязано во время создания и предложения, как решить проблему, я хочу событие щелчка, пожалуйста, помогите ... попробовал форматирование значений и все, кроме метода, который я не могу вызвать. ...

1
0
4 555
1

Ответы 1

Есть решение для этого. Сначала в рендерере ячеек поместите bind(this), а затем сделайте то же, что и ниже. Вы можете передать значение раскрывающегося списка.

Надеюсь это поможет.

{
    headerName: 'Type Of Pin',
    field: 'pinType',
    width: 160,
    cellRenderer: this.typeOfPin.bind(this),
    suppressSorting: true
}
typeOfPin(params) {
    console.log(params);
    const eDiv = document.createElement('div');
    // tslint:disable-next-line:no-this-assignment
    const self = this;
    eDiv.innerHTML =
        '<select placeholder="Select" class="form-control ag-form-control">' +
        '<option></option>' +
        '<option value="number">Number</option>' +
        '<option value="random">Random</option>' +
        '</select>';
    eDiv.addEventListener('change', () => {
        console.log('button clicked');
        self.test(event.target.value);
    });

    return eDiv;
}

Другие вопросы по теме