mat-autocomplete 在输入焦点上自动隐藏占位符文本
mat-autocomplete auto-hide placeholder text on input focus
我正在按照文档中的示例使用带输入的 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>
当点击输入开始输入字符时,占位符不会消失,直到我输入第一个字符。我是否遗漏了一些应该设置的 config\properties?
还是我需要设置占位符值绑定并自己设置it\clear?
谢谢
您可以删除输入中的占位符并在 mat-form-field
中添加 mat-placeholder
并使用 class.
自定义 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%;
}
仅使用 OOTB matInput
并隐藏占位符 "on-float"
/*hide the floating mat input part */
.mat-form-field-should-float .mat-form-field-label-wrapper {display: none;}
完整的解决方案
.middle-cut .mat-form-field-should-float .mat-form-field-label-wrapper {display: none;}
.middle-cut .mat-form-field-should-float .mat-form-field-infix { margin-top: -10px;}
.middle-cut .mat-form-field-infix {border:0; padding-top:0; padding: .1375em 0; }
.middle-cut .mat-form-field-label{top: 0.85em;}
您可以使用 mat-placeholder 并通过在(焦点)事件上向其添加 class 来隐藏它,这将隐藏占位符。看到这个link
我正在按照文档中的示例使用带输入的 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>
当点击输入开始输入字符时,占位符不会消失,直到我输入第一个字符。我是否遗漏了一些应该设置的 config\properties?
还是我需要设置占位符值绑定并自己设置it\clear?
谢谢
您可以删除输入中的占位符并在 mat-form-field
中添加 mat-placeholder
并使用 class.
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%;
}
仅使用 OOTB matInput
并隐藏占位符 "on-float"
/*hide the floating mat input part */
.mat-form-field-should-float .mat-form-field-label-wrapper {display: none;}
完整的解决方案
.middle-cut .mat-form-field-should-float .mat-form-field-label-wrapper {display: none;}
.middle-cut .mat-form-field-should-float .mat-form-field-infix { margin-top: -10px;}
.middle-cut .mat-form-field-infix {border:0; padding-top:0; padding: .1375em 0; }
.middle-cut .mat-form-field-label{top: 0.85em;}
您可以使用 mat-placeholder 并通过在(焦点)事件上向其添加 class 来隐藏它,这将隐藏占位符。看到这个link