我如何在剑道/角度选择中阻止下拉列表的值更改

时间:2019-05-18 15:37:18

标签: angular typescript drop-down-menu kendo-ui kendo-ui-angular2

我想更改下拉列表值选择的控件。我想停止下拉列表中的选定值更改。

我在它的触发valueChange事件上有剑道下拉列表。

<kendo-dropdownlist #dropdownlist required [data]="responseTypes" 
                                [defaultItem]="{responseTypeID: null, responseTypeName: 'Select Response Type'}"
                                [textField]="'responseTypeName'"
                                [valueField]="'responseTypeID'"
                                name="responseTypeId"
                                [(ngModel)]="selectedResponseType"
                                (valueChange)="responseTypeChange($event)"
                                #responseTypeIdVar="ngModel" class="form-control" style="width:180px;">

</kendo-dropdownlist>

2 个答案:

答案 0 :(得分:0)

这不是最佳答案,我希望您会找到一个更好的答案,但是它是有效的。

绑定:

<kendo-dropdownlist [value]="selectedVal"
  (valueChange)="valueChange($event)">

valueChange()代码:

public valueChange(value: any): void {
    let valToShow = this.selectedVal;
    this.newVal = value;
    setTimeout(() => {
      this.selectedVal = "changeToSomethingOther";
    }, 1);
    setTimeout(() => {
      this.selectedVal = valToShow;
    }, 1);
    this.open('dialog');
    this.log('valueChange', value);
  }

我正在做的是将绑定值更改为其他值,然后又恢复为旧值,但是您必须在setTimeOut中执行它以触发更改检测。

答案 1 :(得分:0)

这是我从剑道团队使用 ChangeDetectorRef 获得的一种解决方案。在重新分配 this.value 之前,先调用 detectChanges 。 valueChange事件是无法避免的,您必须根据需要手动重置组件的值

Click here for the example