Короткий ответ
Казалось бы, нет никакого способа сделать это и на самом деле, вероятно, никогда не будет для встроенной date
трубы Angular2 .
Детальное объяснение
Команда Angular2 решила реализовать поддержку локалей с помощью API интернационализации, как указано в начале исходного файла источника даты:
fr-CH
Теоретически это означает, что нам не нужно беспокоиться о форматировании локали, потому что все это будет доступно через API с контролируемым спецификацией, предоставляемый непосредственно браузером.
На практике, однако, мы сталкиваемся с проблемой необходимости беспокоиться о том, поддерживает ли браузер все будущие локали, которые вам когда-либо понадобятся в вашем приложении. Самый первый язык, который я пробовал ( fr
), не работал, что заставило меня опубликовать этот вопрос. Кажется, что в настоящее время Chrome поддерживает только fr
(без диалектов), как указано здесь (хотя эта ссылка предназначена для приложений Chrome, я думаю, что можно с уверенностью предположить, что этот код общего доступа с их реализацией Intl)
Альтернативная альтернатива труб
Поскольку в API интернационализации для каких-либо пользовательских локалей не существует каких-либо разрешений, лучшей альтернативой является внедрение пользовательского канала с использованием библиотеки момента; основанный на примере , взятом из этой должности reddit, любезно предоставлено deadcorps3 (только код концепции):
// Locale settings
let locale = getUserSelectedLanguage(); // retrieve from somewhere else
@Pipe({
name: 'i18nDate'
})
export class I18nDatePipe implements PipeTransform {
transform(value: string, format: string): string {
let momentDate = moment(new Date(value));
if (momentDate.isValid())
return momentDate.locale(locale).format(format);
else
return value;
}
}
Дополнительная информация
- Существует polyfill для межд объекта здесь , но я не смотрел на это и не знаю , если вы можете использовать его , чтобы переопределить реализацию браузера по умолчанию. Я лично больше заинтересован в реализации чего-то с той библиотекой, которую я уже использую в своих проектах, вместо того, чтобы начинать добавлять повторяющиеся функции.
- Я также нашел этот ответ stackoverflow полезным во время моих поисков.