Я не могу вызвать метод из области видимости
У меня есть столбец, в котором есть кнопка, которая вызывает метод, когда на него нажимают. Так что щелчок дает мне объект 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)"
, Для этого не потребовалась бы дополнительная инструкция связывания, но я полагаю, что это именно то, что есть.