Angular Material 2 DatePicker에 대한 사용자 지정 DateAdapter 작업.

이것은 미디엄에 대한 나의 첫 번째 블로그 게시물이며 Angular Material 과 관련된 글을 쓰는 것은 처음 입니다. Material 2 프로젝트는 재 작성되었으며 지속적으로 개발 중입니다 (베타 단계). 머티리얼 팀은 새로운 구성 요소를 출시하고 문제를 해결하며 Angular 개발자의 삶을 쉽게 만드는 데 큰 역할을하고 있습니다.

내 블로그 주제 인 Custom DateAdapter로 돌아갑니다 . 최근 프로젝트에서 사용자 지정 날짜 형식 (YYYY-MM-DD)을 제공해야하는 시나리오가있었습니다.이 형식은 날짜 선택기 구성 요소 (MM / DD / YYYY)에서 제공하는 기본 형식과 다릅니다. 문서에 따르면 사용자 지정 날짜 형식 (모든 형식 일 수 있음)을 만드는 것은 DateAdapter를 확장하는 것만 큼 쉽습니다 (저를 믿으세요, 쉽지 않았습니다.). 웹 사이트에서 해당 예제를 아직 사용할 수 없습니다. . 그래서 Github 문제 페이지 인 Stackoverflow에서 약간의 검색을 수행하고 많은 예제를 통해 자체 Custom DateAdapter를 구현하는 방법을 알아 냈습니다.

여기서 공유하고 싶은 date-picker.module 파일을 만들었습니다. 이것은 인터넷에서 구할 수없는 것이 아닙니다. 단지 그것을 알아내는 데 시간이 걸렸기 때문에 사용자 지정 날짜 어댑터를 만들고자하는 사람에게이 모듈을 예제로 사용하는 것이 좋을 것이라고 생각했습니다.

// Custom DateAdapter
import {NgModule} from '@angular/core';
import {MdDatepickerModule, MdNativeDateModule, NativeDateAdapter, DateAdapter, MD_DATE_FORMATS} from '@angular/material';

// extend NativeDateAdapter's format method to specify the date format.
export class CustomDateAdapter extends NativeDateAdapter {
   format(date: Date, displayFormat: Object): string {
      if (displayFormat === 'input') {
         const day = date.getUTCDate();
         const month = date.getUTCMonth() + 1;
         const year = date.getFullYear();
         // Return the format as per your requirement
         return `${year}-${month}-${day}`;
      } else {
         return date.toDateString();
      }
   }
   
   // If required extend other NativeDateAdapter methods.
}

const MY_DATE_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'},
   }
};

@NgModule({
   declarations: [],
   imports: [],
   exports: [MdDatepickerModule, MdNativeDateModule],
   providers: [
      {
         provide: DateAdapter, useClass: CustomDateAdapter
      },
      {
         provide: MD_DATE_FORMATS, useValue: MY_DATE_FORMATS
      }
   ]
})

export class DatePickerModule {

}

Angular 팀 전체를 응원 합니다.

이것은 내 첫 블로그 게시물입니다. 피드백 / 제안이 있거나 오류를 발견하면 알려주십시오. 감사!

Suggested posts

내가 가장 많이 사용하는 코딩 리소스

내가 가장 많이 사용하는 코딩 리소스

이번 주에 저는 일일 이메일 목록의 회원으로부터 이메일을 받았습니다. 그들은 알고 싶어했습니다. 매일, 매주, 매월 어떤 리소스를 방문합니까? 좋은 질문입니다! 제 작업 흐름과 제가 사용하는 주요 리소스에 대한 통찰력을 공유하게 되어 기쁩니다.

Lit 라이브러리 시리즈 — 1: lit-html 라이브러리에 대한 심층 분석

Lit 라이브러리 시리즈 — 1: lit-html 라이브러리에 대한 심층 분석

이 블로그 시리즈의 목적은 Lit 라이브러리를 깊이 탐구하고 Lit 라이브러리의 고유한 기능과 시장의 다른 라이브러리 및 프레임워크와 차별화되는 방법을 포괄적으로 이해하는 것입니다. 이 시리즈는 1과 같은 주제를 다루는 세 부분으로 나뉩니다.

Related posts

일부 프리랜서가 자신의 삶을 속이는 이유

일부 프리랜서가 자신의 삶을 속이는 이유

나는 최근에 세계 최대의 전문 소셜 네트워크인 Linkedin에 있었고 내가 팔로우하는 프리랜서 디자이너의 게시물을 발견했는데 내 관심을 끌었습니다. 그들은 모두 비행기에서, 노트북과 함께 해변에서, 수영장에서, 멋진 전망이 있는 사무실에서 사진을 게시했습니다.

지구를 구하고 돈을 버는 방법

지구를 구하고 돈을 버는 방법

페트병, 유리병, 알루미늄캔, 그린에너지 패키지를 무심코 버린 적이 몇 번이나 되셨나요? 재활용에 대한 대가로 무언가를 얻을 수 있기를 몇 번이나 바랐습니까? 당신이 대부분의 사람들과 같다면 대답은 아마도 여러 번일 것입니다. 재활용은 종종 번거로움, 자질구레한 일 또는 즉각적이거나 실질적인 혜택을 가져오지 않는 의무로 간주됩니다.

전화번호만 있으면 누구나 추적 | OSINT 조사

전화번호만 있으면 누구나 추적 | OSINT 조사

OSINT 수사관, CTF 플레이어 또는 단순히 스팸 전화를 받는 사람일 수 있습니다. 광고에서 본 번호를 확인하려는 사람.

그 위협 아카이브: Vol 7 블랙 바스타

그 위협 아카이브: Vol 7 블랙 바스타

오늘날의 상호 연결된 세계에서 사이버 공격의 위협은 그 어느 때보다 만연해 있습니다. 사이버 범죄자와 국가 행위자는 지속적으로 취약점을 악용하고 귀중한 데이터를 도용하여 모든 규모의 조직에 상당한 위험을 초래합니다.