0

再会,

通常,我会将下拉值设置为字符串,例如:

<mat-form-field>
   <mat-select name="searchReloadType2" placeholder="reload to" required #searchReloadType2="ngModel"
      [(ngModel)]="reloadTypeObjStr" >
      <mat-option [value]="rReloadType.key" *ngFor="let rReloadType of reloadTypeList">{{ rReloadType.label }}
       </mat-option>
   </mat-select>
    <mat-error *ngIf="!searchReloadType2.valid">
        reloadTo is required
    </mat-error>
  </mat-form-field>

下拉列表中设置rReloadType.key为 的值在哪里,如果用户单击下拉列表,但未选择任何值,则将显示在下拉列表下方。stringreloadTypeObjStr"reloadTo is required"

我希望有一个下拉列表,将值设置为对象而不是字符串,例如:

     <mat-form-field>
       <mat-select name="searchReloadType" placeholder="reload to" required #searchReloadType="ngModel"
          [(ngModel)]="reloadTypeObj" >
          <mat-option [value]="rReloadType" *ngFor="let rReloadType of reloadTypeList">{{ rReloadType.label }}
           </mat-option>
       </mat-select>
        <mat-error *ngIf="!searchReloadType.valid">
            reloadTo is required
        </mat-error>
      </mat-form-field>

where是下拉列表rReloadType中的对象(而不是),并设置为,这是一个对象。此时,如果用户没有从该下拉列表中选择任何值,则不会显示,此时 mat-error 不起作用。stringreloadTypeObjreloadTo is required

我想请教一下,有什么我可以做的吗?或者角度不支持这个?我必须使用字符串值而不是对象值进行下拉?

4

1 回答 1

0

希望你做得很好。

我试图重现您的问题,并且在这两种情况下都可以正常工作,我在这里看不到任何问题。 https://stackblitz.com/edit/angular-mat-form-field-fbtask?file=app%2Fform-field-prefix-suffix-example.html

另外,我建议您searchReloadType.errors?.required在 mat-error 中使用,而不是!searchReloadType.valid. 因此,您还可以使用errors?.required,errors?.pattern来检查模式,errors?.minlength等等errors?.maxlength。当您处理各种输入时,这些会更有用。

平安出来。

于 2021-12-26T09:27:19.620 回答