0

目前我正在尝试从 a 中获取选定的值dxSelectBox并将其分配给隐藏的表单字段。我已经在带有模板引用的标记中尝试过它,我已经在控制器文件中尝试过它(访问DxiItemComponent并获取它的值。

实际上,我有这个标记:

<dxi-item #selectBox dataField="managerId" [label]="{text: 'Felettes'}"
              editorType="dxSelectBox"
              [editorOptions]="{dataSource: managers,
                                valueExpr: 'id',
                                displayExpr: 'name',
                                placeholder: 'Kérlek válassz',
                                searchEnabled: true,
                                searchExpr: 'name',
                                searchMode: 'contains',
                                openOnFieldClick: true,
                                deferRendering: false,
                                noDataText: 'Nincs megjelenítendő adat',
                                onValueChanged: managerNameChanged}">
      <dxi-validation-rule type="required" message="A mező kitöltése kötelező"></dxi-validation-rule>
    </dxi-item>
    <dxi-item dataField="manager.name" value="selectBox.value.name"></dxi-item>

managerNameChanged看起来像这样:

  managerNameChanged() {
    alert(this.selectBox._value);
  }

但我对selectBox. 我这样声明:

  @ViewChild("selectBox") selectBox: DxiItemComponent;

所以,问题是,我如何获得dxSeletBox编辑器的价值?

4

2 回答 2

0

我解决了。我在表单项中声明了一个模板,如下所示:

<div *dxTemplate>
        <dx-select-box
                       #selectBox
                       [dataSource]="managers"
                       valueExpr="id"
                       displayExpr="name"
                       placeholder="Kérlek válassz"
                       searchEnabled="true"
                       searchExpr="name"
                       searchMode="contains"
                       openOnFieldClick="true"
                       deferRendering="false"
                       noDataText="Nincs megjelenítendő adat"
                       (onValueChanged)="managerNameChanged()">
        </dx-select-box>
      </div>

然后像这样设置其他字段值:

<dxi-item dataField="manager.name" [editorOptions]="{ value: managerName }"></dxi-item>

在控制器中:

  @ViewChild("selectBox") selectBox: DxSelectBoxComponent;
managerNameChanged() {
    this.managerName = this.selectBox.displayValue;
  }

于 2020-07-01T19:30:41.867 回答
0

这是您应该如何调用这些小部件的示例。请参阅DevExtreme for Angular的文档

@ViewChild("targetDataGrid", { static: false }) dataGrid: DxDataGridComponent
于 2020-07-01T19:23:05.153 回答