Я не могу вызвать метод из области видимости

У меня есть столбец, в котором есть кнопка, которая вызывает метод, когда на него нажимают. Так что щелчок дает мне объект rows, и я извлекаю свойство, которое мне нужно для вызова другого метода. Я не могу вызвать reloadDialog, это в моем компоненте. Это в столбце в DxGrid.

<dxi-column type="buttons" caption="Button"
  [width] = 150 alignment="left"
  [allowExporting]="false">
  <dxi-button
      text="Detail"
      [visible]="true"
      [onClick]="buttonClickDetails">
  </dxi-button>
</dxi-column>

Это buttonClickDetails и reloadDiaload находятся в одном компоненте

public buttonClickDetails(e: any) {
  console.log('inside button click details');
  const id = e.row.data.AgreementId;
  console.log('Leaving the buttonClickDetails');
  // I get an error that says reloadDialog is not a funtion.
  this.reloadDialog(id, 'Agreement');
}

1 ответ

Решение

Убедитесь, что вы применили все инструкции, приведенные в документах. В своем примере они показывают вам, что вам нужно самостоятельно связать контекст следующим образом:

@Component(...)
export class MyComponent {

    constructor() {
        // binding 'this' will pass it as the context of that function.
        this.buttonClickDetails = this.buttonClickDetails.bind(this);
    }

    public buttonClickDetails(e: any) {
        console.log('inside button click details');
        const id = e.row.data.AgreementId;
        console.log('Leaving the buttonClickDetails');
        this.reloadDialog(id, 'Agreement');
    }
}

Документы, откуда я его взял: настройка столбцов команд


Я думаю, это действительно странно, что они не предоставили "нормальный" метод выходного события Angular, такой как: (click)="buttonClickDetails($event)", Для этого не потребовалась бы дополнительная инструкция связывания, но я полагаю, что это именно то, что есть.

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