Как изменить цвет заполнителя md-input-container с помощью css в угловом материале

Как изменить цвет заполнителя md-input-container с помощью CSS в Angular Material? Как скриншот ниже, у меня нет телефона. и текстовое поле пароля. Телефонный номер. текстовое поле имеет номер телефона и пароль имеет имя заполнителя пароля.

enter image description here

Ответы

Ответ 1

Заполнитель обозначается как <label> в угловом материале. Поэтому вам действительно нужно стилизовать ярлык, а не заполнить его.

Как только вы нажмете (фокус) на ввод, этот <label> который выглядит как заполнитель, сместится и преобразуется в форму <label>.

Поэтому вам просто нужно применить этот CSS:

/* When the input is not focused */
md-input-container label {
  color: red;
}

/* When the input is focused */
md-input-container.md-input-focused label {
  color: blue;
}

Взгляните на эту демонстрацию Plunkr.

Ответ 2

в последней версии углового вы можете удалить местозаполнитель во вводе и добавить мат-заполнитель в поле формы мата и настроить css с классом

html:

<mat-form-field>
    <input matInput type="text">
    <mat-placeholder class="placeholder">Search</mat-placeholder>
</mat-form-field>

CSS:

.mat-focused .placeholder {
    color: #00D318;
}

Ответ 3

Как сказал @Wenacary в этом посте: Как изменить Угловой 5 Заполнитель материала?

В последней версии углового вы можете удалить местозаполнитель во вводе и добавить матовщик в поле mat-form-field и настроить css с классом

html:

<mat-form-field>
    <input matInput type="text">
    <mat-placeholder class="placeholder">Search</mat-placeholder>
</mat-form-field>

CSS:

.mat-focused .placeholder {
    color: #00D318;
}

Ответ 4

В Угловом 4+

Сначала вам нужно будет отключить ViewEncapsulation для стилей Material Elements. Будьте предупреждены, что это подрывает DOM по умолчанию с угловой эмулированной теневой тенью, и вы должны действовать с осторожностью (https://blog.thoughtram.io/angular/2015/06/29/shadow-dom-strategies-in-angular2.html).

В dummy.component.ts:

@Component({
 ...,
 encapsulation: ViewEncapsulation.None,
})

Затем присвойте элементу <mat-form-field> уникальный класс в dummy.component.html:

<mat-form-field class="dummy-input-field" floatPlaceholder="always">
  <input placeholder="Dummy"/>
</mat-form-field>

Наконец, в dummy.component.css примените стиль:

.dummy-input-field .mat-input-placeholder {
  color: red;
}

Аналогично, если вы хотите динамически изменять цвет, если поле сосредоточено:

.dummy-input-field.mat-focused .mat-input-placeholder {
  color: red;
}

Ответ 5

Для более новых версий материалов, которые имеют префикс mat вместо префикса md, вы можете сделать это двумя способами:

путь 1: использование инкапсуляции просмотра не установлено, а затем запись стилей в файле css компонентов, например, @user2245995, указанном в ответе выше. Несмотря на то, что это способ угловатости, пожалуйста, имейте в виду, что стили, которые вы пишете здесь, будут распространяться на все дочерние/родительские компоненты и влиять на другие элементы.

путь 2: Мы можем использовать компиляторы потомков с пронизывающим теневым тоном, т.е. /deep/ or :: ng-deep или >>> Ниже приведен пример

/deep/ label.mat-input-placeholder {
  color: #fff;   // choose the color you want
}

Хотя этот метод определен в угловых документах на данный момент, они упомянули, что этот метод скоро будет устаревшим. подробнее: https://angular.io/guide/component-styles#!#-deep-

Ответ 6

Одно из решений, предоставленных самим материалом 2, содержится в примере кода. Я сделал образец здесь:

<mat-form-field>
 <mat-label>Input</mat-label>
 <input matInput >
</mat-form-field>

Демо-версия Plunker

Ответ 7

.container {
  .mat-form-field-outline,
  .mat-form-field-empty.mat-form-field-label,
  .mat-form-field-label,
  .mat-form-field-underline,
  .mat-input-element,
  ::placeholder {
    color: $white !important;
  }
}

Код выше дает мне результаты ниже. Я переопределяю form-field контур, пустую метку, метку, подчеркивание, элемент ввода, текст заполнителя.

Я использую Angular 8.2.2 и Angular Material 8.2.2 image of 3 input fields with all white borders, placeholder text, and labels