#angular #typescript #data-binding #drop-down-menu #kendo-ui-angular2
#angular #typescript #привязка данных #выпадающее меню #kendo-ui-angular2
Вопрос:
Я использую пользовательский интерфейс Kendo для выпадающего списка Angular, я хочу управлять значением, чтобы оно не менялось автоматически при выборе, но я могу управлять им вручную.
В их официальной документации говорится следующее:
Используйте свойство value. Если значение задается через свойство value, вам необходимо подключиться к событию valueChange и вручную обновить значение свойства value.
Круто, за исключением небольшой проблемы, это просто не работает, оно все равно меняется автоматически.
Вот код:
HTML
<kendo-dropdownlist
[data]="relationTypes"
[textField]="'display'"
[valueField]="'order'"
[value]="row.relation_type"
(valueChange)="handleRelationTypeChange(row,$event)">
</kendo-dropdownlist>
ts
public handleRelationTypeChange(row, $event) {
this.MyService.updateRelationType($event.order).then((res) => {
console.log(res);
row.relation_type = $event;
},
(err) => {
console.log(err);
});
}
Только если сервер вернет успешный ответ, я изменю вручную.
Проблема, как уже упоминалось, в том, что она все равно изменяется автоматически.
Ответ №1:
Хорошо, после многих попыток ответ кажется простым. Жаль, что на сайте нет примера.
Я думаю, это поможет многим другим, поэтому:
Чтобы предотвратить автоматическое изменение value
, мне нужно было изменить привязку значения с
<kendo-dropdownlist
[data]="relationTypes"
[textField]="'display'"
[valueField]="'order'"
[value]="row.relation_type"
(valueChange)="handleRelationTypeChange(row,$event)">
</kendo-dropdownlist>
Для привязки пути буксировки:
<kendo-dropdownlist
[data]="relationTypes"
[textField]="'display'"
[valueField]="'order'"
[(value)]="row.relation_type"
(valueChange)="handleRelationTypeChange(row,$event)">
</kendo-dropdownlist>