Угловой материал чипов заполнителя - PullRequest
0 голосов
/ 11 марта 2019

Я использую чипы автозаполнения Angular Material (https://material.angular.io/components/chips/examples). Таким образом, есть заполнитель, который увеличивается после того, как вы нажмете на поле. Можно ли удалить этот заполнитель, чтобы я мог использовать заполнитель по умолчанию без угловых стилей материала? Я пытался найти его в инструментах разработки, но не смог.

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Если вы хотите настроить компоненты материала Angular и предоставить свои собственные стили для заполнителя mat-chip, у меня есть следующие предложения. Вы можете использовать один из них.

1) Перезаписать классы на вашем основном style.css (или style.scss, в зависимости от того, что вы используете). Если вам интересно, это тот, который находится на том же уровне каталогов, что и ваш index.html, main.ts, package.json и т. Д. Вам может понадобиться добавить объявление !important

.mat-form-field-label {
  color:blue!important;
}

2) Используйте ViewEncapsulation:None. Это удаляет всю инкапсуляцию, так что правила CSS будут иметь глобальный эффект.

В ваш component.ts вам нужно будет импортировать ViewEncapsulation, а затем выбрать None, когда вы предоставите определения для инкапсуляции

import { .. ViewEncapsulation } from '@angular/core';
.
.
@Component({
  selector: 'chips-autocomplete-example',
  templateUrl: 'chips-autocomplete-example.html',
  styleUrls: ['chips-autocomplete-example.css'],
  encapsulation: ViewEncapsulation.None
})

И на вашем component.css,

.mat-form-field-label {
   color:blue!important;
 }

3) Настройка директивы MatPlaceholder (переопределение заполнителя Angular Material css без использования! Важный) [EDIT]

Согласно API-интерфейсу Angular Material Form Field получается, что директива-заполнитель доступна после того, как мы импортировали этот модуль.

В вашем component.html включите директиву <mat-placeholder> с пользовательским классом в <mat-form-field> и удалите заполнитель из <input> в <mat-chip-list>

<mat-form-field class="example-chip-list">
  <mat-placeholder class="placeholder">Search</mat-placeholder>
  <mat-chip-list #chipList>       
    <mat-chip
      *ngFor="let fruit of fruits"
      [selectable]="selectable"
      [removable]="removable"
      (removed)="remove(fruit)">
      {{fruit}}
      <mat-icon matChipRemove *ngIf="removable">cancel</mat-icon>
    </mat-chip>
    <input
      #fruitInput
      [formControl]="fruitCtrl"
      [matAutocomplete]="auto"
      [matChipInputFor]="chipList"
      [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
      [matChipInputAddOnBlur]="addOnBlur"
      (matChipInputTokenEnd)="add($event)">
  </mat-chip-list>
  <mat-autocomplete #auto="matAutocomplete" (optionSelected)="selected($event)">
    <mat-option *ngFor="let fruit of filteredFruits | async" [value]="fruit">
      {{fruit}}
    </mat-option>
  </mat-autocomplete>
</mat-form-field>

И в вашем component.css определите класс .placeholder (назначенный директиве mat-placeholder) с вашими пользовательскими свойствами CSS.

.placeholder {
  color: green
}
1 голос
/ 11 марта 2019

Вы можете добавить [floatLabel]="'never'", поэтому при вводе чипа заполнитель не поднимется и не будет виден.

Добавить к mat-form-field

<mat-form-field class="example-chip-list" [floatLabel]="'never'"></mat-form-field>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...