У меня есть компонент, который содержит много входных данных.Все они, кроме одного, будут использовать стандартный формат (ММ / ДД / ГГГГ).Я прочитал здесь , что помогло мне понять, как получить нужный формат (MM / YYYY), который я хотел, но теперь он отображается при каждом вводе даты из-за провайдера useValue на уровне компонентов.Что привело меня к этому вопросу, на который я не могу найти правильный ответ.Как я могу иметь несколько форматов на одном компоненте?
На наборе текста:
export const COMMISSION_DATE_FORMATS = {
parse: {
dateInput: 'MM/YYYY',
},
display: {
dateInput: 'MM/YYYY',
monthYearLabel: 'MMM YYYY',
dateA11yLabel: 'LL',
monthYearA11yLabel: 'MMMM YYYY',
},
};
...
providers: [
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
{ provide: MAT_DATE_FORMATS , useValue: COMMISSION_DATE_FORMATS },
]
На интерфейсе пользователя:
Один, требующий пользовательский формат (отображается правильно)
<mat-form-field>
<input matInput [matDatepicker]="dSaleMonthPicker" placeholder="Commission Month & Year" formControlName="dSaleMonth">
<mat-datepicker-toggle matSuffix [for]="dSaleMonthPicker"></mat-datepicker-toggle>
<mat-datepicker #dSaleMonthPicker startView="multi-year" (yearSelected)="commissionDateYearHandler($event)" (monthSelected)="commissionDateMonthHandler($event, dSaleMonthPicker)">
</mat-datepicker>
</mat-form-field>
Другие, требующие стандартного формата (но они также отображаются в произвольном формате)
<mat-form-field>
<input matInput formControlName="dSold" [matDatepicker]="dSoldPicker" placeholder="Sold Date" matTooltipPosition="below">
<mat-datepicker-toggle matSuffix [for]="dSoldPicker"></mat-datepicker-toggle>
<mat-datepicker #dSoldPicker [startAt]="dSold"></mat-datepicker>
</mat-form-field>
Я знаю, что с formControlName я не могу использовать типичные "трубопроводы" из Angular, так как я могу иметь несколько форматов на одном компоненте?Возможно, есть способ добавить пользовательский формат непосредственно на вход?Любая помощь очень ценится.