I am making use of the mat-autocomplete component with an input as per the examples in the docs, and I have configured the input to use a label and have non floating placeholder text like so:
<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>
When clicking into the input to start entering characters, the placeholder doesn't disappear, not until I enter the first character. Am I missing some config\properties that should be set?
Or do I need to set up a placeholder value binding and set it\clear it myself?
Thanks
You can remove the placeholder in the input and add a mat-placeholder
in the mat-form-field
and custom the css with a class.
HTML file:
<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 file:
.mat-focused .placeholder {
color: transparent;
}
.example-form {
min-width: 150px;
max-width: 500px;
width: 100%;
}
.example-full-width {
width: 100%;
}