Angular Фильтр даты материала на одном адаптере - PullRequest
0 голосов
/ 05 мая 2020

Я создал настраиваемую дату для своего mat-datepicker, выполнив следующие действия:

export const PICK_FORMATS = {
  parse: {dateInput: {month: 'short', year: 'numeric', day: 'numeric'}},
  display: {
      dateInput: 'input',
      monthYearLabel: {year: 'numeric', month: 'short'},
      dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},
      monthYearA11yLabel: {year: 'numeric', month: 'long'}
  }
};

class PickDateAdapter extends NativeDateAdapter {
  format(date: Date, displayFormat: Object): string {
      if (displayFormat === 'input') {
          return formatDate(date,'dd-MMM-yyyy',this.locale);;
      } else {
          return date.toDateString();
      }
  }
}

@Component({
  ...
  providers: [
    { provide: DateAdapter, useClass: PickDateAdapter },
    { provide: MAT_DATE_FORMATS, useValue: PICK_FORMATS }
  ]
})

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

1 Ответ

0 голосов
/ 05 мая 2020

MatDatePicker внедряет DateAdapter и MAT_DATE_FORMATS для использования в компоненте. Таким образом, он будет использовать те, которые предоставлены в вашем компоненте. Если вы хотите, чтобы они использовались только в одном компоненте: единственное решение, которое я вижу, - это заключить его в директиву, которая предоставляет эти пользовательские реализации.

...