如何在没有输入元素或隐藏 UI 元素的情况下以 Angular 形式赋值?

How to assign values in an Angular form without an input element or hiding the UI element?

我正在处理这个模板驱动的表单,其中有一个下拉菜单。

下拉菜单的值是 ID,显示值是 Name

当我提交表单时,我需要值 IDName 都在表单 output

   <mat-form-field>
            <mat-label>State</mat-label>
            <mat-select [(ngModel)]="data.stateCode" name="StateCode" #yddfyty>
              <mat-option *ngFor="let state of stateOptions" [value]="state.ID">
                {{state.name}}
              </mat-option>
            </mat-select>
   </mat-form-field>

提交表格后,我得到一个JSON

{
  StateCode: "Option I select in the Dropdown"
}

当我提交表单时,我也希望StateName在表单输出中。

如何将下拉列表中选择的 StateName 分配给模板驱动表单中的模型 属性?

我想到了一种既可以使用元素又可以隐藏元素的方法,还有其他方法吗?

提交后只能在Typescript文件中做吗?

是的,根据给定的限制,您必须处理 .ts 文件中提交的表单。

ViewChild 在这些情况下派上用场:

HTML 文件:

<mat-form-field>
            <mat-label>State</mat-label>
            <mat-select  name="StateCode" #ElementRef>
              <mat-option *ngFor="let state of stateOptions" [value]="state.ID">
                {{state.name}}
              </mat-option>
            </mat-select>
   </mat-form-field>

组件 TS 文件:

首先声明一个viewchild变量:

@ViewChild('ElementRef') stateElement: any;

以后您可以在提交表单时使用此变量:

    OnSubmit(){
     let selectedStateCode = this.stateElement.nativeElement.value//selected dropdown value
     let selectedStateText = this.stateElement.nativeElement.textContent //selected dropdown text
     //rest of your submit code;
    }