如何做一个'mat-select'只读?

Atu*_*tha 9 angular-material angular angular5

我正在进行一个有角度的5项目.有许多mat-select元素应该像文本框一样只读.我发现有一个disabled功能是:

  <mat-form-field>
    <mat-select placeholder="Choose an option" [disabled]="disableSelect.value">
      <mat-option value="option1">Option 1</mat-option>
      <mat-option value="option2" disabled>Option 2 (disabled)</mat-option>
      <mat-option value="option3">Option 3</mat-option>
    </mat-select>
  </mat-form-field>
Run Code Online (Sandbox Code Playgroud)

哪个看起来像:

在此输入图像描述

它淡化了文本,下面的衬里得到了改变,是否有可能使其成为只读?

小智 15

您可以将可编辑的选择与只读文本框和 ngIf 结合起来:

  <mat-form-field>
    <mat-label>Choose an option</mat-label>
    <input *ngIf="!editing" mat-input formControlName="mySelect" [readonly]="true">
    <mat-select *ngIf="editing" formControlName="mySelect">
      <mat-option value="option1">Option 1</mat-option>
      <mat-option value="option2" disabled>Option 2 (disabled)</mat-option>
      <mat-option value="option3">Option 3</mat-option>
    </mat-select>
  </mat-form-field>
Run Code Online (Sandbox Code Playgroud)

  • 除了您的文本框将显示“选项1”而不是“选项1” (8认同)

Pra*_*chi 6

将CSS添加到select块和mat-form-field块,它们可以自动应用于所有select元素:

<mat-form-field class="readonly-wrapper">
  <mat-select class="readonly-block" placeholder="Choose an option" [disabled]="disableSelect.value">
    <mat-option value="option1">Option 1</mat-option>
    <mat-option value="option2" disabled>Option 2 (disabled)</mat-option>
    <mat-option value="option3">Option 3</mat-option>
  </mat-select>
</mat-form-field>  
Run Code Online (Sandbox Code Playgroud)

CSS代码

.readonly-wrapper {
    cursor: not-allowed;
}

.readonly-wrapper .readonly-block {
    pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)

  • 这不会阻止元素获得焦点并使用键盘选择选项 (6认同)