Angular2 DatePipe не форматируется в соответствии с языком браузера

Я использую Angular2 по умолчанию DatePipe для форматирования даты в соответствии с локалью / языком браузера.

В моем случае это всегда формат даты в соответствии с английским языком.

app.module.ts    
{
       provide: LOCALE_ID, useValue: "hi"
}

В моем собственном канале я создал объект DatePipe в конструкторе, используя DI.

myDatePipe.ts
public constructor(private translate: TranslateService,private datePipe: DatePipe, , @Inject(LOCALE_ID) locale: string)) { 
    console.log(locale); // This log string 'hi'
}

public transform(value: string, format: string) {
    // 'shortTime' format always return value in '5:15 am' format.
    // 'longDate' format always return value in '28 दिसंबर 2017' format.
    return this.datePipe.transform(value, format); 
}

Я зарегистрировал текущий примененный язык, зарегистрировав Locale_ID, и он вошел как 'привет'.

1 ответ

Лучше всего создать собственную трубу ShortDate и использовать службу перевода NGX, использовать язык браузера и использовать его для преобразования даты. Вот пример короткой трубы, которую я использую

Это Angular 6, поэтому я также использую новую функциональность formatDate, доступную в @angular/common,

import { Pipe, PipeTransform} from '@angular/core';
import { formatDate  } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';

@Pipe({
  name: 'shortDate'
})
export class ShortDatePipe implements PipeTransform {
    constructor(private translateService: TranslateService) { }

    transform(value: string): string {
        var language: string = this.translateService.getBrowserCultureLang();
        console.log(language);
        return (value == "" || value == null) ? "" : formatDate(value, 'shortDate', language);
    }

}

если вы не используете angular6, вам нужно импортировать datePipe, поместить datepipe в ваш конструктор и использовать его преобразование

Как-то так (не проверено или не проверено, просто с моей головы)

import { DatePipe } from '@angular/common';
...
    constructor(private translateService: TranslateService, 
                private datePipe: DatePipe ) { }

...
return this.datePipe.transform( value, 'shortDate',language);
Другие вопросы по тегам