Я пытался добавить эффекты (размытие) и (фокус) в поле ввода поля mat-form-field, но, похоже, с моей стороны они работают неправильно.
Вот пример кода, похожий на тот, что у меня есть:
HTML-файл
<form class = "example-form">
<mat-form-field class = "example-full-width" appearance = "outline">
<mat-label *ngIf = "isFieldFocused">Selected Food</mat-label>
<input
matInput
placeholder = "Select Menu"
(focus) = "click($event)"
(blur) = "inActive($event)"
/>
</mat-form-field>
</form>
машинописный файл
export class InputOverviewExample {
isFieldFocused: boolean = false;
click($event) {
if ($event) {
this.isFieldFocused = true;
}
}
inActive() {
this.isFieldFocused = $event ? true : false;
}
}
В результате этого кода, когда я сосредоточился на поле mat-form, он не отображал mat-label. Может ли кто-нибудь подсказать, что может быть не так с моим подходом, или предложить альтернативное решение?
--
Я пытаюсь добиться первоначального отображения заполнителя. Затем, когда поле ввода сфокусировано, оно должно отобразить метку mat. Это возможно? Заранее спасибо!






Он работает нормально, проблема в том, что *ngIf портит анимацию, вместо этого используйте [hidden], который также скрывает значения, но не уничтожает их, и анимация, похоже, тоже работает!
<mat-label [hidden] = "!isFieldFocused">Selected Food</mat-label>
import { Component } from '@angular/core';
import { MatSelectModule } from '@angular/material/select';
import { MatInputModule } from '@angular/material/input';
import { MatFormFieldModule } from '@angular/material/form-field';
import { FormGroup, ReactiveFormsModule, FormControl } from '@angular/forms';
import { tap, debounceTime } from 'rxjs/operators';
import { merge } from 'rxjs';
import { CommonModule } from '@angular/common';
/** @title Simple form field */
@Component({
selector: 'form-field-overview-example',
templateUrl: 'form-field-overview-example.html',
styleUrl: 'form-field-overview-example.css',
standalone: true,
imports: [
MatFormFieldModule,
CommonModule,
MatInputModule,
MatSelectModule,
ReactiveFormsModule,
],
})
export class FormFieldOverviewExample {
isFieldFocused: boolean = false;
click($event: any) {
console.info('focus');
if ($event) {
this.isFieldFocused = true;
}
}
inActive($event: any) {
this.isFieldFocused = false;
}
}
<form class = "example-form">
<mat-form-field class = "example-full-width" appearance = "outline">
<mat-label [hidden] = "!isFieldFocused">Selected Food</mat-label>
<input
matInput
placeholder = "Select Menu"
(focus) = "click($event)"
(blur) = "inActive($event)"
/>
</mat-form-field>
</form>
@Kenbrnbe поставь зеленую галочку, если этот ответ поможет, спасибо!