#css #angular #angular-material
#css #угловой #angular-материал
Вопрос:
Я хочу, чтобы подсказка отображалась только тогда, когда включен соответствующий ввод.
<mat-form-field appearance="outline">
<mat-label>Site Name</mat-label>
<input
matInput
[disabled]="disableEditSiteName()"
required
[(ngModel)]="site.siteName"
[value]="site.siteName"
/>
<mat-hint align="start"> Required </mat-hint>
</mat-form-field>
В приведенном выше примере, когда значение disableEditSiteName() равно true, я хотел бы скрыть подсказку. Это можно было бы сделать с помощью *ngIf , однако, если бы был способ скрыть все мат-подсказки, если их ввод был отключен, это означало бы меньшее количество повторений кода.
Комментарии:
1. Я пробовал следующий CSS, но безуспешно:
.mat-input:disabled .mat-hint { display: none;}
Ответ №1:
1. Использование *ngIf
В вашем html-коде disableEditSiteName()
функция result решает отключить или включить input
.
Таким образом, вы можете использовать это значение для mat-hint
.
Если disableEditSiteName()
функция возвращает true
, вы должны скрыть mat-hint
, а если она возвращает false, вы должны показать mat-hint
.
Это можно сделать *ngIf
следующим образом.
<mat-hint align="start" *ngIf="!disableEditSiteName()"> Required </mat-hint>
2. Использование CSS
Вы можете скрыть mat-hint
с помощью
селектора в CSS следующим образом.
input[disabled] .mat-hint {
display: none;
}
Комментарии:
1. Привет, Дерек, спасибо за этот ответ. Как я задавал в вопросе, но, возможно, недостаточно четко, я бы предпочел не повторять *ngIf для каждого поля мат-формы и надеялся, что есть способ сделать это для всех подсказок и их соответствующих входных данных на основе отключенного состояния ввода.
2. Я обновил свой ответ, используя
CSS
.input[disabled] .mat-hint { display: none; }
будет работать.3. Затем вы можете попробовать сделать это с возвращаемым значением функции, например
input[disabled="true"] .mat-hint { display: none; }
4. Извините, я удалил свой предыдущий комментарий, в котором говорилось, что он работал,
input[required] .mat-hint { display: none; }
поскольку оказалось, что он не работает (я просматривал входные данные без подсказок). Вышеупомянутое все еще не работает.5. Я также проверял
input[disabled="true"] ~ .mat-hint { display: none; }
При проверке страницы в Chrome, кажется, что ввод и мат-подсказка имеют отдельных родителей. Родительский элемент вводаmat-form-field-flex
, а родительский элемент мат-подсказкиmat-form-field-subscript-wrapper
.