首页 文章

mat-autocomplete自动隐藏输入焦点上的占位符文本

提问于
浏览
1

我正在根据文档中的示例使用mat-autocomplete组件和输入,并且我已将输入配置为使用标签并且具有非浮动占位符文本,如下所示:

<mat-form-field floatLabel="never">
  <input 
    type="text" 
    placeholder="Search..." 
    aria-label="Number" 
    matInput 
    [formControl]="search" 
    [matAutocomplete]="auto">
  <button 
    mat-button 
    *ngIf="search.value" 
    matSuffix 
    mat-icon-button 
    aria-label="Clear" (click)="clearSearch()">
      <mat-icon>close</mat-icon>
  </button>
  <mat-autocomplete 
    #auto="matAutocomplete" 
    (optionSelected)="goToResult($event)">
    <mat-option 
      *ngFor="let result of searchResults" 
      [value]="result">
      {{result.id}}
    </mat-option>
  </mat-autocomplete>
</mat-form-field>

当点击输入开始输入字符时,占位符不会消失,直到我输入第一个字符 . 我错过了一些应该设置的配置\属性吗?

或者我是否需要设置占位符值绑定并将其设置为\清除它自己?

谢谢

1 回答

  • 2

    您可以删除输入中的占位符,并在 mat-form-field 中添加 mat-placeholder 并使用类自定义css .

    HTML文件:

    <form class="example-form">
      <mat-form-field floatLabel="never">
          <input 
            matInput 
            type="text" 
            aria-label="Number" 
            matInput [formControl]="myControl" 
            [matAutocomplete]  ="auto">
    
          <mat-placeholder class="placeholder">Search</mat-placeholder>
    
          <mat-autocomplete #auto="matAutocomplete">
            <mat-option *ngFor="let option of options" [value]="option">
              {{option}}
            </mat-option>
          </mat-autocomplete>
      </mat-form-field>
    </form>
    

    CSS文件:

    .mat-focused .placeholder {
        color: transparent;
    }
    
    .example-form {
      min-width: 150px;
      max-width: 500px;
      width: 100%;
    }
    
    .example-full-width {
      width: 100%;
    }
    

相关问题