Angular: функция обратного вызова Devexpress dxslectbox onselectionaged не имеет доступа к этому объекту

Я использую угловую версию devexpress. В моей форме у меня есть dxselectbox, он имеет функцию события onselectionaled, чтобы получить выбранное значение. Я могу получить значение, но в функции обратного вызова я не могу получить доступ к другому методу, это глобальная объявленная переменная, которая показывает undefined.

products : any[];
.....
onSelectionChangedCallback(event){
 let value = event.selectedItem;
this.test(); // shows undefined
this.products; // shows undefined
}

test(){
alert('');
}

В чем проблема? Пожалуйста помоги

1 ответ

Я думаю, что ваша проблема связана с этим билетом: https://supportcenter.devexpress.com/ticket/details/t487497/dxform-how-to-reach-a-service-within-onvaluechanged-handler-in-angular-2 .

Проблема в том, что внутри функция обратного вызова ссылается на devexpress-widget, а не на ваш угловой компонент.

Исправление будет заключаться в том, чтобы связать thisк функции обратного вызова, когда вы определяете onSelectionChangedCallbackк onselectionchanged-Мероприятие.

      onselectionchanged: onSelectionChangedCallback.bind(this)

Основываясь на предоставленном вами коде, я не знаю, где именно это происходит в вашем случае.

Документация Devextreme: https://js.devexpress.com/Documentation/Guide/Angular_Components/Component_Configuration_Syntax/#Callback_Functions

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