matSuffix не работает при переносе внутри matFormField

#css #angular #datepicker #mat-form-field

#css #угловой #datepicker #мат-форма-поле

Вопрос:

В настоящее время я пытаюсь написать глобальный указатель даты. Для этого я создал компонент, соблюдающий данный пример из angular (https://material.angular.io/guide/creating-a-custom-form-field-control ). Я только хочу передать на аутсорсинг часть всего поля mat-form, так что это то, что я делал:

app.component.html:

   <mat-form-field color="accent" floatLabel="always">
    <mat-label>Date of Birth</mat-label>
    <my-date-picker formControlName="birthday"></my-date-picker>
  </mat-form-field>
  

my-date-picker.component.html:

 <input matInput [matDatepicker]="picker" placeholder="TT.MM.JJJJ" [ngModel]="value"
  (ngModelChange)="modelChanged($event)">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
  

(Я думаю, что .ts не должен быть важен для моей проблемы)

Но теперь это выглядит так:

введите описание изображения здесь

Это также произойдет, если я бы обернул это так в app.component.html:

   <mat-form-field color="accent" floatLabel="always">
    <mat-label>Date of Birth</mat-label>
    <div>
      <input matInput [matDatepicker]="picker" placeholder="TT.MM.JJJJ" [ngModel]="value"
      (ngModelChange)="modelChanged($event)">
      <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
      <mat-datepicker #picker></mat-datepicker>
    </div>
  </mat-form-field>
  

Потому что тогда он отображает matSuffix как часть мат-инфикса. Похоже, что matSuffix распознается неправильно.
введите описание изображения здесь

Хотя это выглядело бы так без дополнительной оболочки (divs): введите описание изображения здесь

Ввод:

 <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
  

в app.component.html это не вариант. Я попробовал это, и это просто приводит к другим ошибкам, которые хуже, чем ошибка css.

Ответ №1:

Итак, я обнаружил, что matSuffix работает только с прямыми потомками и не смог найти обходного пути для моего случая. Кажется, это открытая «проблема» до сих пор. На самом деле, это должно быть ожидаемое поведение, хотя многие люди, похоже, борются с этим.

Я решил это, используя директиву вместо компонента-оболочки. Директива прослушивает такие события, как нажатие клавиши и изменение, для проверки введенной даты, а также устанавливает заполнитель, поэтому у каждого средства выбора даты, которое использует эту директиву, уже есть заполнитель, который я хочу.

Если у кого-нибудь есть реальное решение вышеуказанной проблемы, пожалуйста, не стесняйтесь поделиться.

Ответ №2:

Это сработало для меня

<mat-datepicker-toggle style=»float: right» matIconSuffix [for]=»средство выбора»>