1

在 Angular 2 中,为了本地化日期管道,您需要提供LOCALE_ID. 我有一个服务LocaleService,它公开了locale$: Observable<string>哪些实现BehaviorSubject<string>. 我不想给这个服务添加任何状态,我希望它是完全被动的。提供时如何从该服务中获取信息LOCALE_ID

4

2 回答 2

1

如果您想为您的应用设置一次语言,使用 LOCALE_ID 的解决方案非常棒。但是,如果您想在运行时更改语言,它不起作用。在这里查看我的答案。

于 2017-08-15T07:44:07.810 回答
0

管道可以返回一个 Observable。

import { Pipe, PipeTransform } from '@angular/core';
import { LocaleService } from 'shared/locale.service';
import { Observable } from 'rxjs/Observable';
import { formatDate } from 'somelibrary';
import 'rxjs/add/operator/map';

@Pipe({
  name: 'myDate',
  pure: false
})
export class MyDatePipe implements PipeTransform {

  constructor(private localeService: LocaleService) { }

  transform(date: string): Observable<String> {
    return this.localeService.locale$.map(locale => formatDate(date, locale));
  }
}
于 2017-02-03T14:53:08.847 回答